vue父子组件通信问题

假设我父组件有A、B两个属性,子组件每当A、B都更新完成时进行相应更新,那么问题来了,如果我在子组件里写两个watcher,有时A更新了、B还没更新完就会触发子组件的刷新。难道必须在父组件里判断A、B都更新完之后再传递给子组件吗?(A和B首先选择了A才能确定B,比如A是一家商店、B是商店里的某件东西)

阅读 1.7k
2 个回答

不知道你说的更新是什么,根据我的理解,也许不用watch方法;
<template>

<div>
    父级组件
    <span @click="onChange(1)">{{obj.value1}}</span>
    <span @click="onChange(2)">{{obj.value2}}</span>
    <child-tamplate ref="childTamplate" />
</div>

</template>
<script>

data(){
    reuturn{
       obj: {
         vlaue1: "属性一",
         vlaue2: "属性二"
       }
    }
},
method: {
    onChange(type){
        const oldObj = JSON.parse(JSON.stringify(this.obj));
        if(type==1){
            // 改变属性一
            console.log(11)
        }else{
            // 改变属性二
            console.log(222)
        };
        if((oldObj.vlaue1 !== this.obj.vlaue1)&&(oldObj.vlaue2 !== this.obj.vlaue2)){
            // 如果两个值都已经改变,调用子组件方法
            this.$refs.childTamplate.update();
        }
    }
}

</script>

既然AB的逻辑在父组件这么清晰,就把A,B的逻辑放在父组件里面,等B更新了再通知子组件就行了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题