Vue | React | |
跨组件状态 | provide/inject相对轻量 TS支持需要使用InjectionKey)。 | context相对强大 天然的TS支持。 |
根节点属性继承 | Fall-through attribute简单便捷 但是要求子节点必须有根,不然传不下去。 | 需要手工处理。 |
副作用 | watch/watchEffect是真正的监视器,保证一次变化只执行一次,可以放心使用。 | useEffect只是一个副作用处理器,不保证一次渲染后只执行一次,需要保证其纯净性。另外useEffect也不能当做监视器用,其依赖数组仅仅用于提升性能。 |
节点引用(ref) |
|
|
双向绑定 | v-model这个模式挺好用的,不过不能滥用,不然会对数据流的可维护性造成毁灭性打击 | 完全没有,需要手工搞 |
异步组件 | 没啥区别 | |
状态逻辑复用 | Composable自动计算依赖,可以带条件地调用,可以迭代调用(但不能滥用,最好只用在固定数量的迭代,动态数量的Composable会出现集体unmount->remount的问题),比较优秀 | hook必须按顺序调用,不可以带条件调用,不能迭代调用,限制颇多 |
插件 | 有专门的插件API | 没有专门的插件API,基本靠手工组织 |
渲染逻辑 | 父组件的更新不一定导致子组件更新,每个子组件是否更新取决于props和ref的稳定性,也提供v-once、v-memo来手动优化,比较优秀 | 父组件的更新一定导致子组件更新,除非使用React.memo来手动规避 |
Vue和React的比较
于 2023-07-26 15:57:19 首次发布