vue和react的同与不同

148 阅读1分钟

相同

1. 组件化

2. Virtual DOM + Diff算法

渲染流程

image.png

都要设置key

image.png

在处理老节点部分,都需要把节点处理 key - value 的 Map 数据结构,方便在往后的比对中可以快速通过节点的 key 取到对应的节点。同样在比对两个新老节点是否相同时,key 是否相同也是非常重要的判断标准。所以不同是 React, 还是 Vue,在写动态列表的时候,都需要设置一个唯一值 key,这样在 diff 算法处理的时候性能才最大化。

3. 数据驱动视图

不同

vuereact
组件语法templatejsx
动态渲染v-if/v-show&&/三元运算符
双向绑定v-model对input绑定change事件,更新state
状态控制useRef()/useReactive() (ref需要.value获取,自动更改状态)useState() (需要set方法手动更新状态)
状态监控watchEffect() (watch()不能初始化时执行)useEffect()(需要在第二个参数写上依赖)
依赖收集watchEffect()/computed()都是自动收集依赖useEffect()/useMemo()/useCallBack()需要在第二个参数写上依赖
组件挂载时执行onBeforeMounted()/onMounted()useEffect() (第二个参数为空数组)
状态更新时执行onUpdated()/onBeforeUpdate()useEffect() (没有第二个参数)
组件销毁时执行onBeforeUnmounted()/onUnMounted()useEffect() 第一个函数参数内返回一个函数
PropsdefineProps()函数组件参数
计算属性computed()useState() (参数为回调函数)
获取domref()useRef()
子组件传递slotprops.children
跨组件通信provide/injectContext
状态管理工具Vuex/PiniaRedux/Mobx...