【发布时间】:2016-09-28 10:31:57
【问题描述】:
我主要在 AngularJS 中进行开发,最近我正在研究 Vue.js 并阅读它的指南,在一页上它提到:
默认情况下,所有的 props 在子属性和父属性之间形成一个单向向下的绑定:当父属性更新时,它会向下流向子属性,反之则不会。此默认值旨在防止子组件意外改变父组件的状态,这会使您的应用程序的数据流更难推理。
这是来自https://vuejs.org/guide/components.html#Prop-Binding-Types。
我想知道何时使用双向绑定,何时不使用有什么原则吗?
对于子组件需要管理数组变量的情况,看来双向绑定还是有意义的。
例如,假设我想制作自己的 Vue.js 或 AngularJS 版本的http://selectize.github.io/selectize.js/。
如果使用双向绑定,我只需将父组件的数组传递给我的 Vue.js 或 AngularJS 选择组件,并让选择组件管理它。
如果不使用双向绑定,似乎替代方案是:
一个。当添加/删除项目时,父组件要么必须手动更新数组
b.或者父组件会有一个手动设置数组的函数,然后将该函数传递给子组件
c。子组件调度父组件监听的事件,并更新其数组
我认为这些是替代方案?两者似乎都比较冗长,似乎并没有提供太多好处。
这是一个例子,但我认为很多组件都会有这个问题,另一个例子是如果我有一个产品选择器组件,只需将数组变量传入这个组件,然后让组件管理数组以反映所选产品。
我对此的主要问题是:
我对替代双向绑定的想法是否正确?
对于上述情况,使用单向绑定是否有优势? (我认为替代方案在避免“意外改变父母的状态”方面没有多大优势)
如果 (1) 和 (2) 是正确的,那么单向向下绑定提供明显优势以避免“意外改变父级状态”的示例是什么?
【问题讨论】:
标签: javascript angularjs vue.js