Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么父组件和子组件之间的双向绑定不好?_Javascript_Angularjs_Vue.js - Fatal编程技术网

Javascript 为什么父组件和子组件之间的双向绑定不好?

Javascript 为什么父组件和子组件之间的双向绑定不好?,javascript,angularjs,vue.js,Javascript,Angularjs,Vue.js,我主要在AngularJS中进行开发,最近我查看了Vue.js并阅读了它的指南,其中有一页提到: 默认情况下,所有道具在子属性和父属性之间形成单向向下绑定:当父属性更新时,它将向下流到子属性,但不会反过来。此默认值旨在防止子组件意外改变父组件的状态,这会使应用程序的数据流更难推理 这是我的 我想知道什么时候使用双向绑定,什么时候不使用有什么原则吗 对于子组件需要管理数组变量的情况,双向绑定似乎是有意义的 例如,假设我想制作自己的Vue.js或AngularJS版本 如果使用双向绑定,我只需将父组

我主要在AngularJS中进行开发,最近我查看了Vue.js并阅读了它的指南,其中有一页提到:

默认情况下,所有道具在子属性和父属性之间形成单向向下绑定:当父属性更新时,它将向下流到子属性,但不会反过来。此默认值旨在防止子组件意外改变父组件的状态,这会使应用程序的数据流更难推理

这是我的

我想知道什么时候使用双向绑定,什么时候不使用有什么原则吗

对于子组件需要管理数组变量的情况,双向绑定似乎是有意义的

例如,假设我想制作自己的Vue.js或AngularJS版本

如果使用双向绑定,我只需将父组件的数组传递给我的Vue.js或AngularJS selectize组件,并让selectize组件管理它

如果不使用双向绑定,替代方案似乎是:

a。当添加/删除项时,父组件必须手动更新数组

b。或者父组件将有一个手动设置数组的函数,然后将该函数传递给子组件

c。子组件分派父组件侦听的事件,并更新其数组

我认为这些是替代方案?两者似乎都比较冗长,似乎没有提供多少好处

这是一个例子,但我认为许多组件都会有这个问题,另一个例子是,如果我有一个产品选择器组件,只需将一个数组变量传入该组件,并让该组件管理数组以反映所选产品就很方便了

我的主要问题是:

  • 我对双向绑定的替代方案的想法正确吗

  • 对于上述情况,使用单向向下绑定是否有优势?(我不认为替代方案能提供多少优势来避免“意外地改变父母的状态”)

  • 如果(1)和(2)是正确的,那么单向向下绑定提供了避免“意外改变父级状态”的明显优势的示例是什么

  • “单向向下绑定”只是一个原理,类似于OO的封装,用于降低代码复杂性

    在我看来,作者并不是有意不使用“双向绑定”(实际上vuejs支持这种绑定),只是提到不要滥用它

    在您的示例中,产品选择器类似于本机输入,当然我认为您可以使用双向绑定,就像v-model一样