create-react-app Use memo: true flag with SVGR

9avjhtql  于 20天前  发布在  React
关注(0)|答案(2)|浏览(16)

你的提议是否与问题相关?
我的情况是,我有组件将SVG图标传递给另一个组件,因为SVG示例总是在变化,所以我有很多不必要的重渲染(例如 <MyBigComponent icon={<MySvg />} /> )。
描述你希望的解决方案
SVGR有一个备忘录选项:https://react-svgr.com/docs/options/#memo 它会将所有SVG组件包裹在 React.memo 中。这将解决上述问题。此外,我真的想不出 memo 会如何破坏现有项目,所以我认为它会对create-react-app有所帮助。
描述你考虑过的替代方案
脑海中浮现的替代方案包括类似 useMemo(() => <MySvg />, []) 的东西,但关于那种感觉有些不对劲。

xsuvu9jc

xsuvu9jc1#

但是关于这个感觉有些不对劲。
但这正是设置该选项所做的。为每个人设置这个似乎有点过度了。由于memo使用了额外的函数和watch调用,它会增加额外的处理。

bfhwhh0e

bfhwhh0e2#

当然,浅层属性比较比比较整个SVG对象(尤其是对于复杂的路径和插图)的调整器要少得多性能损失。

相关问题