We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Vue
React
虚拟dom
tree diff
component diff
element diff
React 会自顶向下全 Diff
Vue 会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树.
diff
render
虚拟dom tree
新旧dom tree
shouldComponentUpdate
Object.defineProperty
getter/setter
watcher
依赖项 dep
依赖项 de
setter
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Vue: 为什么Vue的虚拟DOM比React虚拟DOM性能好
虚拟 Dom - Diff
Vue
和React
都采用了虚拟dom
算法, 以最小化更新真实DOM, 从而减小不必要的性能损耗.tree diff
,component diff
,element diff
.更新策略不同
React 会自顶向下全 Diff
||||Vue 会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树.
React
中, 当状态发生改变时, 组件树就会自顶向下的全diff
, 重新render
页面, 重新生成新的虚拟dom tree
,新旧dom tree
进行比较, 进行patch打补丁方式, 局部跟新dom. 所以React
为了避免父组件跟新而引起不必要的子组件更新, 可以在shouldComponentUpdate
做逻辑判断, 减少没必要的render, 以及重新生成虚拟dom, 做差量对比过程.Object.defineProperty
把这些 data 属性 全部转为getter/setter
. 同时watcher
实例对象会在组件渲染时, 将属性记录为依赖项 dep
, 当依赖项 de
项中的setter
被调用时, 通知watch重新计算, 使得关联组件更新.The text was updated successfully, but these errors were encountered: