vue双向绑定的三种方法.

在 Vue.js 中,使用 .sync 修饰符时,能够实现父组件和子组件之间的双向绑定。这种双向绑定的实现是基于一个约定:使用 .sync 修饰符绑定的属性需要满足以下条件:

属性名称需要带有 v-bind 的动态属性绑定语法。
在子组件内部,通过 $emit 触发一个事件来更新该属性的值。
这样,父组件中绑定的属性会实时响应子组件的变化,而子组件通过触发事件将变化传递给父组件。

在你提供的代码中,使用对象 paraObject 可以实现双向绑定,而使用普通的变量 isShow 则不能实现双向绑定。这是因为对象是引用类型,对象的属性可以通过引用来共享,从而实现双向绑定。

在对象的情况下,当你在父组件中更新 paraObject.isShow 的值时,子组件中绑定的 :is-show.sync 属性会实时更新,并且子组件通过 $emit 触发的事件也会同步更新父组件中的 paraObject.isShow 值。

而在普通变量的情况下,变量是按值传递的,无法直接共享内存地址,所以无法实现双向绑定。如果你希望在子组件中更新变量的值并反映到父组件中,你需要通过事件的方式显式地将变量的新值传递给父组件。

综上所述,使用对象作为属性可以实现双向绑定,而普通变量则需要通过事件的方式来进行值传递。


image.png
2.16.4 直接sync  props是没问题的, 而在2.17.4 sync必须是date里的值, 否则会报错
使用常量, 子组件$emit事件, vue 2.7以上需要配合watch使用, 真是吐了
使用对象, 子组件不改变引用就不会发生问题, 真的好用, 文档真的不推荐. 如果严格控制, 暂时没发现什么问题
使用computed
showDialog:{
            get() {
                return this.visible;
            },
            set(value) {
                // 在这里可以根据需要进行相应的逻辑处理
                // 例如,可以触发一个自定义事件来通知父组件更新 prop 值
                this.$emit('update:visible', value);
            }
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 五一假期在家补了课,看到双向绑定与单向数据流的概念。瓦特,我之前以为Vue的V-model就是双向数据流,其实不然...
    南蓝NL阅读 14,537评论 1 3
  • 父组件 子组件 给组件传递一份数据时,并且要实现双向绑定,可以使用v-model实现接收的属性是value自定义的...
    我的安娜有点菜阅读 1,729评论 0 0
  • Vue双向绑定实例教程 双向绑定简介 我们知道Vue是一个典型的MVVM框架,Vue在动态绑定这一块提供了丰富的A...
    KQin阅读 4,470评论 0 0
  • 参考 Vue.js MDN 一、 vue 双向数据绑定语法 Vue.js作为前端MVVM三大框架之一,最核心的功能...
    zhiqiangx阅读 2,812评论 0 0
  • 前言 在之前面试中,有被问到这个问题,虽然了解过是劫持Object.defineProperty方法,但是其细节并...
    Aleph_Zheng阅读 4,775评论 0 5

友情链接更多精彩内容