老师,对于单向数据流有个困惑点,求帮助
来源:3-7 Vue的组件之组件的定义

C_CAT
2018-10-07
查阅官方文档的时候也有看到说 子组件内不要修改 props的属性值,有个疑问是如果 props 传进来的是个对象呢? 假设这么个场景:父组件获取到了后端的数据,交给子组件去渲染出条目,后端的数据类似一下这种结构
[
{ id: 1, content: ‘你好’, isSelected: false } ,
{ id: 2, content: ‘你好’, isSelected: true} ,
{ id: 3, content: ‘你好’, isSelected: false } ,
]
然后条目中有个 checkbox ,它根据后端数据显示是否勾选,并且用户进行重新勾选的并保存后要将修改后的数据再发送给后端。。按照最初的思路就是直接再 checkbox 上进行 v-module 绑定。但是这样子组件不就修改了props了么?感觉违背单向数据流的思想了。。曾想过将props 传过来的后端数据在子组件内克隆一份,然后监听子组件内克隆的数据的变更再通知父组件,这样做发现还是有问题,因为在模板中用的并不是 props 的数据,导致props数据更新后子组件并不会更新视图。。然后为了这个问题又想了其他办法解决。。最后为了不修改props的数据做了大量的额外工作。。所以很迷茫,是我对单向数据流的理解有偏差么,为什么为了实现这个思路开发时会这么繁琐。求老师指点迷津~~
1回答
-
Jokcy
2018-10-08
这是正常的困惑,因为其实没什么头特别好的办法解决。你说的方法也可以用,但是要监听props的变化,一旦变化要手动切换到新的props。或者学react做一个controlled input,每次操作必须通过回调进行。
052018-10-17
相似问题
回答 1
回答 1