vue项目组件之间的数据传递?

父组件把方法传递给子组件视频:https://www.bilibili.com/video/BV1uW411m745?from=search&seid=3072872826005397160

Vue的组件作用域都是孤立的,也就是说子组件内不能直接引用父组件的数据。需要通过特定的方法才能完成各个组件之间的通信

一、父组件向子组件传递数据

    1.在 Vue 中,可以使用 props 向子组件传递数据。

         父组件在调用子组件的地方,添加一个自定义的属性,属性的值就是需要传递给子组件的值,如果需要传递的值是一个变量,或者是boolean,或者是number类型,需要使用绑定属性


在子组件定义的地方,添加一个选项 props,方式一 props的值为数组,元素为自定义的属性名


可以在子组件中通过 自定义的属性名就可以拿到父组件传递的数据

二、子组件向父组件传递数据

子组件主要通过事件传递数据给父组件(自定义事件)

1、子组件

this.$emit定义自定义组件,两个参数,一个是事件名称,注意一定要加双引号,第二个参数也要传给父级的数据

2、父组件

三、子组件向子组件传递数据(即非父子之间的传递)

Vue 没有直接子对子传参的方法,建议将需要传递数据的子组件,都合并为一个组件。如果一定需要子对子传参,可以先从传到父组件,再传到子组件。为了便于开发,Vue 推出了一个状态管理组件,可以很方便实现组件之间的参数传递

1.引入PubSubJS消息订阅与发布

发布消息者通过绑定事件 通过methods中定义方法:通过pubsub.publish('消息名',指定的数据);订阅消息者通过mounted中订阅消息pubsub.subscribe('消息名', 回调函数(两个参数:事件名和接收的数据)=>{ } )

2.引入buS

创建一个公共的bus,然后导出一个bus

bus.js

import  Vue  from   'vue' ;

export   const  bus =new  Vue();

然后A B两个组件同时引入bus.js

import  { bus }  from  '@/components/bus.js';

A组件$emit事件及要传的值

getBrother () {      bus.$emit('testEvent','我是要传的值')  }

B组件接收

bus.$on('testEvent',val => { console.log(val);this.val = val; } )

你可能感兴趣的:(vue项目组件之间的数据传递?)