Vue组件通信常用的的几种方式
一. 父传子:主要通过props来实现 【Vue|Vue组件通信常用的的几种方式】具体实现:父组件通过 import 引入子组件,并注册,在子组件标签上添加要传递的属性,子组件通过 props 接收,接收有两种形式:
一是通过数组形式[‘要接收的属性’ ],
二是通过对象形式{ }来接收,对象形式可以设置要传递的数据类型和默认值,而数组只是简单的接收
父组件
>
import ChildOne from './ChildOne';
export default{
components: {
ChildOne,
},
data() {
return {
parentMessage: '我是来自父组件的消息',
};
},
};
>
我是子组件一
>{{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);
},
推荐阅读
- vue|vue中组件通信的几种方式
- vue-cli · Failed to download repo vuejs-templates/webpack: unable to verifythe first certificate
- 浅谈setInterval(aa,1000)与setInterval(aa(),1000)的区别
- vue3|vue3.0常用的composition API
- java|2022年支付宝集五福|看这里100%扫敬业福
- html5|腾讯漫画(js逆向)
- opencv|opencv.js 之官网教程翻译加代码
- Vue.js入门到精通|Vue中的Vuex详解
- vue|Vue入门项目(学生管理系统之班级管理 【含源码】)