BFE.devAI解答 - React 小测验
2. React re-render 2 - memo()
- 运行代码后,控制台会输出什么?
输出:
A
B
C
App
D
- 为什么
B
组件使用了memo
却仍然输出了B
?
虽然B
使用了 memo
,但是它的父组件A
每次render时都会向其传入一个新的 state
属性,因此即使 B
本身的 props 没有变化,但由于 A
父组件每次 render 都会导致 B
重新 render,所以 B
中的 console.log('B')
仍然被执行。
- 为什么
D
组件不需要使用memo
,也不影响性能?
因为D
组件只有静态输出,在不改变内部实现的情况下它永远会输出相同的内容。与使用memo优化后的B
组件不同,不管D
是不是memo的,最终的结果也是一样的,所以不必优化它,也不会有性能上的问题。