vue 父子组件之间通信的基本方式

711 阅读1分钟

vue vue 父子组件之间通信的基本方式

先导语

本文主要是介绍下vue 父子组件之间通信的最基本的一种方式:通过props和$emit. 直接上代码: 父组件:

<template>
  <Input @addFn="addFn"/>
  <List :listData="listData" @deleteFn="deleteFn"/>
</template>

<script>
import Input from "./Input.vue";
import List from "./List.vue";
export default {
  components:{
    Input,List
  },
  data() {
    return {
      listData:['测试1','测试2'],
    }
  },
  methods:{
    addFn(value){
      this.listData.push(value)
    },
    deleteFn(index){
      this.listData.splice(index,1)
    }
  }
}
</script>

子组件1:

<template>
  <ul>
    <li v-for="(item,index) in listData" :key="'id'+index">
      {{item}}
      <button @click="deleteFn(index)">删除</button>
    </li>
  </ul>
</template>

<script>
export default {
  props:{
    listData:{
      type:Array,
      default:[]
    }
  },
  data() {
    return {
    }
  },
  methods:{
    deleteFn(index){
      this.$emit('deleteFn',index)
    }
  }
}
</script>

子组件2:


<template>
  <input type="text" v-model="msg">
  <button @click="add">add</button>
</template>

<script>
export default {
  data() {
    return {
      msg:''
    }
  },
  methods:{
    add(){
      this.$emit('addFn',this.msg)
    }
  }
}
</script>

结果:

image.png

点击add时增加,点击删除时删除!

结束语

这里只讲了最基本的一种父子组件间的通信方式,后面我们还会讲到其他的组件间的通信方式。那么下次见,好好学习,天天向上!

7.jpg