我知道使用React.memo()记住组件/组件的一部分通常是一个很好的做法,但我发现自己记住了使用 React Hook Form 实现的表单上的每个字段。由于 RHF 使用不受控制的组件,因此这似乎不是问题:组件似乎更新得很好,而且我确实看到了性能改进。
尽管如此,我的直觉告诉我,记住几乎所有内容都是一种不好的做法。这是一个不好的做法吗?还有其他方法可以节省渲染吗?
你的直觉是正确的。如果React.memo()一切都使 React 更加高效,那么它应该是默认行为,而不仅仅是可选的(如纯函数)。
更简短的解释:
React.memo()通过比较组件的先前和当前属性来防止一些冗余的重新渲染。
<Parent>
<Child />
</Parent>
Run Code Online (Sandbox Code Playgroud)
通常,当父级重新渲染时,子级默认也会重新渲染。
如果重新渲染时传入的 propsChild没有改变Parent,Child如果使用React.memo()on则不会重新渲染Child
这里的问题是:为什么 React 知道 props onChild在当前渲染阶段没有改变?
答案是:React本身要做一个比较,就是成本React.memo()
如果比较时间 > 重新渲染整个组件的时间Child,它甚至会减慢重新渲染时间。
您只需要用于React.memo()一些巨大的事情(具有很多行的表,并且由于某些原因它没有分页)。
| 归档时间: |
|
| 查看次数: |
2020 次 |
| 最近记录: |