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的,最终的结果也是一样的,所以不必优化它,也不会有性能上的问题。