美文网首页
props里的属性只被监听(watch)一次问题

props里的属性只被监听(watch)一次问题

作者: 更真实 | 来源:发表于2019-10-09 14:59 被阅读0次

    子组件

    子组件通过show实现是否显示

      name:'menuRef',
      props:{
        visible: {
          type:Boolean,
          default:false,
        },
        onclose:{
          type:Function
        }
      },
      watch:{
        visible:function(val){
          this.show=val;
        }
      },
    

    父组件

    父组件通过修改visible来修改子组件的show属性

    // template
    <menuRef :visible="showMenu"></menuRef>
    
    // script
    onSearch:function(value) {
      this.showMenu=true;
    },
    

    问题

    • 父组件修改visible时,子组件中只监听到一次visible的变化

    原因

    • 父组件设置this.showMenu=truethis.showMenu的值为true,再次设置this.showMenu=true时visible不会被传递到子组件

    解决方法

    在子组件中修改父组件的showMenu属性

    // 父组件template
    <menuRef :visible="showMenu" v-on:onclose="handleClose"></menuRef>
    // 父组件sctipt
    handleClose:function(){
      this.showMenu=false;
    }
    
    // 子组件修改父组件的showMenu属性
    this.$emit('onclose');
    

    相关文章

      网友评论

          本文标题:props里的属性只被监听(watch)一次问题

          本文链接:https://www.haomeiwen.com/subject/sskgpctx.html