react不是真正的响应式吗?

在vue中,更改了响应式数据,会自动触发视图的更新,在react中,还必须进行setState等操作,是不是可以这么理解,react不是真正的响应式,需要程序员手动触发视图更新

阅读 4.4k
2 个回答

所以react不是vue,不同的框架其价值在于设计者的思路,而不是最终结果是否一致。

首先明确,为了性能考虑,谁都不会侦听所有数据的变化。通常大家把这个叫做双向绑定,而不是响应式。

从vue的代码结构就可以看出来,它会侦听特定部分的变化,所以,哪些数据会导致刷新,那么把这个数据放到特定的位置就好了。

而react没有这个结构(指函数组件,基于class的组件也是有on...结构的),非常的自由,那么带来的问题就是如何控制侦听范围,useState就是react的解决方案。而且react18的发布对于state触发更新又做了进一步优化,使性能进一步提升。

其实angular也有类似的做法。

总而言之,大家一定都是有限侦听,所以必然会有一套机制管理被侦听的内容。

React 是单向数据流,也就是在上游修改数据,下游的引用也会跟着变化。
在通过 JS 修改数据的时候,单向数据流与 Vue 的属性监听差别不大,无非一个要setState、一个要赋值而已。
真正会造成体验差异的,是双向绑定这种“魔法”,可以免掉开发者自己写回调的麻烦,更是有效避免了“受控组件”这种让新手锤键盘的诡异行为。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题