vue 关于element el-dialog dialogShow的使用心得

从前在写父组件控制子组件内弹窗的dialogShow的时候,基本上会在子组件内用watch去监听props传来的dialogShow,然后在子组件内设置新的标识,再去更新该标识。在子组件内改变dialogShow的时候,再去$emit去改变父组件内dialogShow的值。真的是写的很复杂,代码冗余,一个小操作写这么多代码。后面学到了下面这种写法。

想要在父组件内控制子组件dialog的显示,可在组件上绑定一个显示属性例如:dialogShow.sync="displayShow"

子组件内其实只需要props接收到以后使用computed进行处理,get的时候则获取props的内容,set的时候是重点
使用this.$emit('update:dialogShow', val)可以对组件上所绑定的属性dialogShow直接做更新,并在下一次get的时候可以获取到更新后的dialogShow

父组件内

...
	<someDialog :dialogShow.sync="displayShow"

子组件内

...
props: {
    dialogShow: {
      type: Boolean
    }
  }
...
computed: {
    dialogVisible: {
      get () {
        return this.dialogShow
      },
      set (val) {
        this.$emit('update:dialogShow', val)
      }
    }
  }

只需要这简单的操作,就解决了之前watch和反复emit的问题

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值