问题
用React函数式调用组件,感觉组件re-render次数过多。
CodeSandBox
不会打印出"Very slow component re-mounts"
算可以了?还是说"Very slow component re-renders"
也不要打印
用React函数式调用组件,感觉组件re-render次数过多。
CodeSandBox
不会打印出"Very slow component re-mounts"
算可以了?还是说"Very slow component re-renders"
也不要打印
10 回答11k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
首先VerySlowComponent不能放在Component里面,因为它是个函数(引用类型的东西),放在里面,每次state变化,它都要重新赋值一遍,也就每次VerySlowComponent都在变化,有变化就会重新渲染执行;
另外,VerySlowComponent渲染不依赖state变化,为了不必要的渲染,需要用memo包起来,它会判断自己依赖的数据有没有发生变化,没变化就不会重新渲染了;