![b04841b67cbb9093fa7d725182cbc7e8.png](https://img-blog.csdnimg.cn/img_convert/b04841b67cbb9093fa7d725182cbc7e8.png)
Vue 与 React 有个非常明显的区别,就是 props 自带响应式,并混入 render 作用域
一方面这是针对“防止组件刷新”的性能优化,但是另一方面,也造成了响应式传递的负担
比如:
const [state,setState] = useState({})
<Child state={
state} setState={
setState}/>
<Child hook={[state,setState]}/>
在 react 中,响应式 hook 可以直接传递给子组件,注意这并非直接赋值的双向绑定,但是要注意的有两点:
- 如果 setState 有其他副作用,需要用 useEffect 处理
- 子组件没必要用 useMemo 包裹防止重绘,毕竟影响重绘的只是参数,做同一的参数对象也可以实现相同效果
但是明显,在 Vue 中这招不生效了
因为凡是传入 props 中的数据,不管是不是响应式数据(响应式也会拆包),都会自动进行变更检测,填充响应式