Vue|Vue组件通信常用的的几种方式

Vue组件通信常用的的几种方式 一. 父传子:主要通过props来实现 【Vue|Vue组件通信常用的的几种方式】具体实现:父组件通过 import 引入子组件,并注册,在子组件标签上添加要传递的属性,子组件通过 props 接收,接收有两种形式:
一是通过数组形式[‘要接收的属性’ ],
二是通过对象形式{ }来接收,对象形式可以设置要传递的数据类型和默认值,而数组只是简单的接收

> import ChildOne from './ChildOne'; export default{ components: { ChildOne, }, data() { return { parentMessage: '我是来自父组件的消息', }; }, }; >

> export default{ props: ['parentMessage'], }; >

二:子传父:主要通过$emit 来实现 具体实现: 子组件通过通过绑定事件触发函数, 在其中设置this. e m i t ( ‘ 要 派 发 的 自 定 义 事 件 ’ , 要 传 递 的 值 ) , emit(‘要派发的自定义事件’,要传递的值), emit(‘要派发的自定义事件’,要传递的值),emit中有两个参数一是要派发的自定义事件,第二个参数是要传递的值
> import ChildOne from './ChildOne'; export default{ components: { ChildOne, }, data() { return { parentMessage: '我是来自父组件的消息', }; }, methods: { parentMethod({ name, age }) { console.log(this.parentMessage, name, age); }, }, }; >

> export default{ mounted() { this.$emit('childEvent', { name: 'zhangsan', age:10 }); }, }; >

兄弟之间传值有两种方法
三:通过 event bus 实现: 具体实现:创建一个空的 vue 并暴露出去,这个作为公共的 bus,即当作两个组件的桥梁,在两个兄弟组件中分别引入刚才创建的bus,在组件 A 中通过 bus. e m i t ( ’ 自 定 义 事 件 名 ’ , 要 发 送 的 值 ) 发 送 数 据 , 在 组 件 B 中 通 过 b u s . emit(’自定义事件名’,要发送的值)发送数据,在组件 B中通过 bus. emit(’自定义事件名’,要发送的值)发送数据,在组件B中通过bus.on(‘自定义事件名‘,function(v) { //v 即为要接收的值 })接收数据
四:通过 vuex 实现 具体实现:vuex 是一个状态管理工具,主要解决大中型复杂项目的数据共享问题,主要包括 state,actions,mutations,getters 和 modules 5 个要素,主要流程:组件通过 dispatch 到 actions,actions 是异步操作,再 actions中通过 commit 到 mutations,mutations 再通过逻辑操作改变 state,从而同步到组件,更新其数据状态
mutations:{ updateSearch(state,item){ state.searchword=item }, } actions:{ updateSearch(context,item){ context.commit("updateSearch",item) }, } //vue文件中 methods: { click_item(item){ this.$store.dispatch('updateSearch',item); },

    推荐阅读