不同页面的组件传值,多层嵌套组件传值

  1. 毫不相干的vue组件
    解决方法:window 事件分发
    A组件中
let options = {}
              options.detail = {//detail为固定参数
                xiangmbid: '',
               ...
              }
const event=new CustomEvent("watchWebsocket", options);
window.dispatchEvent(event);

B组件中

window.addEventListener("watchWebsocket",(options)=>{
       console.info( "详情:"+ options["detail"]);
     },false);

2.多层嵌套的组件(依赖注入)

A    provide(){
	return {
	data1:this.data1,
	method1:this.method1	
}
}

X中引用A组件中数据或方法

inject :['data1','method1'],

应用   this.data1......this.method1()
Vue 中,父组件向子组件传值可以使用 props,而子组件向父组件传值可以使用事件。但是多层组件嵌套时,可能需要跨越多个组件级别进行数据传递。这时可以使用事件总线或 Vuex 管理状态来实现。 1. 使用事件总线 事件总线是一个空的 Vue 实例,它可以用来跨组件传递事件和数据。在创建事件总线时,我们需要在 Vue 实例中定义一个空的 Vue 实例,然后在需要传递数据组件中引入该实例并触发事件,其他组件中再监听该事件并接收数据。 ```javascript // 创建事件总线 const bus = new Vue() // 在需要传递数据组件中触发事件 bus.$emit('eventName', data) // 在其他组件中监听事件并接收数据 bus.$on('eventName', (data) => { // 处理数据 }) ``` 2. 使用 Vuex 管理状态 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 在使用 Vuex 进行多层组件嵌套数据传递时,我们可以将需要传递的数据存储在 Vuex 的状态树中,并通过 mutations 或 actions 来修改和获取数据。 ```javascript // store.js import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { data: '' }, mutations: { setData(state, data) { state.data = data } }, actions: { setData({ commit }, data) { commit('setData', data) } } }) // 子组件中通过 $store.state.data 获取数据 this.$store.state.data // 子组件中通过 $store.commit('setData', data) 修改数据 this.$store.commit('setData', data) // 子组件中通过 $store.dispatch('setData', data) 异步修改数据 this.$store.dispatch('setData', data) ``` 以上两种方法都可以实现多层组件嵌套数据传递,具体使用哪种方法需要根据项目实际情况和需求进行选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值