vuex 动态监听数据

需求:在子组件中监听父组件的动态数据变化

解决方案

//监听属性
  computed: {
    dialogState() {
    	// 数据变化能够实时监听
        console.log("监听属性",store.getters.dialogState);

      return store.getters.dialogState;
    }
  },
  //监控data中的数据变化
  watch: {
    dialogState(){
		// 方法体内第一次数据变化监听不到
	}
  },

详细描述:

父组件是一个弹出层,子组件又是动态组件,所以普通的父传子方案(v-bind,props)接收不到数据,那只好用vuex进行监听

  • 父组件-DOM部分
<el-dialog class="childPage" title="" :visible.sync="dialogVisible" width="100%" height="100%">
  <component v-bind:is="dialogPage"></component>
</el-dialog>
  • 父组件-动态设置数据
computed: {
	  dialogVisible: {
	    get() {
	      return store.getters.dialogState;
	    },
	    set(val) {
	      store.commit("dialogState", val)
	    }
	  }
  },
  • 子组件监听父组件动态数据
//监听属性
  computed: {
    dialogState() {
    	// 数据变化能够实时监听
        console.log("监听属性",store.getters.dialogState);

      return store.getters.dialogState;
    }
  },
  //监控data中的数据变化
  watch: {
    dialogState(){
		// 方法体内第一次数据变化监听不到
	}
  },
  • 现在没有搞懂为什么子组件监听的时候需要同时有computed、watch两个事件监听。 watch监听的时候第一次数据变化也拿不到??? 如果有知道的请不吝赐教

至于为什么要这样监听数据,主要是业务逻辑的关系关于动态组件的一个小小的注意点:内存里的数据需要手动回收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值