后端瞎学之 --Vue 组件实现父传子、子传父

后端瞎学之--Vue组件实现父传子、子传父

今儿在聊天室otis问了一个如何实现vue子传父,刚好前一个月也被临时调遣去做了一个月的*‘前端cv工程师'*,也多少能看懂一点儿,顺带看了一下怎么实现,今儿也算有一点点收获。


首先我们有父组件A,子组件a。

父组件A:

<template>
  <div class="hello">
    <h2>这里是父组件A</h2>
    <h3>我喜欢{{likeThings}}</h3>
    <span><a @updateData="updateData" :likeThings="likeThings"/></span>
  </div>
</template>
<script>
import a from "./aa";
export default {
  components: {
    a,
  },
  data() {
    return {
      likeThings: "唱、跳、rap、篮球",
    };
  },
  methods: {
    updateData(data) {
      this.likeThings= data;
    },
  },
};
</script>

子组件a:

<template>
  <div class="home">
    <h1>我是子组件a</h1>
    <h2>我的父组件喜欢{{likeThings}}</h2>
    <h2 @click="changeData('坤坤')">点击以实现emit子传父</h2>
  </div>
</template>

<script>
export default {
  props: {
    likeThings: {
      type:String,
    },
  },
  methods: {
    changeData(val) {
      this.$emit("updateData", val);
    },
  },
};
</script>

一、父传子

父传子好实现,只需要:

1、父组件定义好 likeThings: "唱、跳、rap、篮球",

2、子组件props中接收属性likeThings

3、父组件在引用子组件时传入:likeThings="likeThings"

4、子组件对传过来的值进行使用。

二、子传父

子传父需要使用到$emit进行调用传值

1、父组件定义好 likeThings: "唱、跳、rap、篮球",

2、定义一个参数来接子组件传来的参数updateData(data) {对数据处理}

3、引用子组件时 将方法传给子组件@updateData="updateData"

4、子组件中定义一个方法用来传递参数changeData(val) { this.$emit("updateData", val); },并调用@click="changeData('坤坤')"

这样一来触发到子组件的changeData方法时就实现了数据子传父的传递。

三、效果:

image.png

四、结尾

嘿嘿这里是练习时常两年半的不热爱工作,但热爱生活,比奇堡最最最棒的竖笛演奏艺术家-------章鱼哥!🎶

第一次写东西,虽然是个简单的知识点。后端一个,其中有错误还请大家订正。

加油,共勉!