在Vue中的组件传值分为3种:父传子、子传父、和兄弟之间传值;
第一种父传子:
主要是通过子组件上定义props接收来实现
具体实现步骤是:
1. 父组件引入子组件并注册,在子组件标签上添加要传递的属性
2. 在子组件上定义一个props对象,定义好接收的属性名,
接收有两种形式
一是通过数组形式,要接收的属性[],接收过来的数据可以直接使用,
二是通过对象的形式来接收{},对象形式可以设置要传递的数据类型和默认值。
第二种子传父:
主要是通过 $emit来实现
具体步骤是:
1.在子组件要触发传值的地方绑定一个事件,在事件里面通过this.$emit()抛出事件和传递的参数,在父组件里接收 ,$emit第一个值是抛出的事件名称,第二个是要传递的数据
2.在父组件中的子组件标签上绑定子组件抛过来的自定义事件,然后通过回调函数去处理。
第三种兄弟之间传值
方法一:通过eventBus来实现
具体步骤是:
1.在src中新建一个eventBus.js的文件,充当两个组件之间的桥梁,y引入第三方的new Vue 定义为eventBus
2.在传输数据的一方通过eventBus.emit 来抛出事件。
3.在接受的数据的一方 通过 eventBus.$on(“事件名”,(data)=>{data是接受的数据})
谁需要数据谁就要提供事件处理函数注册事件(通过 $on 注册),用于获取兄弟组件传递过来的数据
方法二:vuex
在vuex的state中 定义公共数据 ,在需要数据的组件中直接使用 this.$store.state.数据名