前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >vue同级组件传值

vue同级组件传值

作者头像
4O4
发布于 2022-04-25 11:11:44
发布于 2022-04-25 11:11:44
72500
代码可运行
举报
文章被收录于专栏:404404
运行总次数:0
代码可运行

侧边栏是aside组件,上面是toolbar组件,现在希望点击侧边栏每个路由都能在toolbar的当前位置处及时更新相应的值,大型应用通常使用vuex管理这部分功能,由于同级组件不能直接传值,需要一个中间件,我们可以先将数据传递给公共的父组件,然后父组件再将数据传递给需要的子组件。

定义了一个公共文件 eventBus.js ,只是创建一个空的vue实例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import Vue from 'vue'
export default new Vue()

在需要通信的同级组件中分别引入eventBus.js文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import bus from '../store/eventBus.js'

在Aside.vue中,通过$emit将事件和参数传递给Toolbar.vue

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
methods: {
  nowPos() {
  	bus.$emit('change', event.target.innerText);
  }
},

在Toolbar.vue 中,通过$on接收接收参数和相应事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mounted() {
  bus.$on("change", (msg) => {
  	this.pos=msg;
  })
},

至于为什么Toolbar中要使用mounted详细参见:Vue的生命周期

created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。

mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档