在vue中,更改了响应式数据,会自动触发视图的更新,在react中,还必须进行setState等操作,是不是可以这么理解,react不是真正的响应式,需要程序员手动触发视图更新
在vue中,更改了响应式数据,会自动触发视图的更新,在react中,还必须进行setState等操作,是不是可以这么理解,react不是真正的响应式,需要程序员手动触发视图更新
React 是单向数据流,也就是在上游修改数据,下游的引用也会跟着变化。
在通过 JS 修改数据的时候,单向数据流与 Vue 的属性监听差别不大,无非一个要setState
、一个要赋值而已。
真正会造成体验差异的,是双向绑定这种“魔法”,可以免掉开发者自己写回调的麻烦,更是有效避免了“受控组件”这种让新手锤键盘的诡异行为。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
所以react不是vue,不同的框架其价值在于设计者的思路,而不是最终结果是否一致。
首先明确,为了性能考虑,谁都不会侦听所有数据的变化。通常大家把这个叫做双向绑定,而不是响应式。
从vue的代码结构就可以看出来,它会侦听特定部分的变化,所以,哪些数据会导致刷新,那么把这个数据放到特定的位置就好了。
而react没有这个结构(指函数组件,基于class的组件也是有on...结构的),非常的自由,那么带来的问题就是如何控制侦听范围,useState就是react的解决方案。而且react18的发布对于state触发更新又做了进一步优化,使性能进一步提升。
其实angular也有类似的做法。
总而言之,大家一定都是有限侦听,所以必然会有一套机制管理被侦听的内容。