Replies: 1 comment
-
|
技术没有优劣之分,服从 团队、业务、产品、工程体系 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
我个人认为
React 需要通过 Scheduler 和 FiberTree结构 实现可打断的渲染,方便随时插入任务,其根本原因就是因为 React 是粗粒度的更新渲染,每次更新一个目标需要递归其子树(除非命中性能优化策略),如果不打断可能会导致 例如用户交互这类优先级极高的任务出现时无法及时响应
但是 Vue 的依赖监听是很细的,那么 Vue的更新渲染也是细粒度的,不需要打断,直接通过
微任务队列管理、收集更新,然后在 nextTick 中统一 flush,接着一次性同步执行完
导致 React 和 Vue 粒度不同原因是,React 的更新是开发者通过 hook 主动调度的,影响范围会从触发点FiberNode一直往下,但是 Vue 通过重写存取器属性或者Proxy实现了对应状态的观察者收集与通知,那么只要状态更新,无需遍历虚拟树,只需要通知到位状态对应的具体的观察者即可
从触发状态更新的角度看,我感觉 React 属于应用级框架,Vue 属于组件级框架,Svelte、Solid.js 属于元素级框架
那么是不是如果应用上层元素变动很多的话,React 的选择就不是很明智?
Beta Was this translation helpful? Give feedback.
All reactions