你的提议是否与问题相关?
我的情况是,我有组件将SVG图标传递给另一个组件,因为SVG示例总是在变化,所以我有很多不必要的重渲染(例如 <MyBigComponent icon={<MySvg />} />
)。
描述你希望的解决方案
SVGR有一个备忘录选项:https://react-svgr.com/docs/options/#memo 它会将所有SVG组件包裹在 React.memo
中。这将解决上述问题。此外,我真的想不出 memo
会如何破坏现有项目,所以我认为它会对create-react-app有所帮助。
描述你考虑过的替代方案
脑海中浮现的替代方案包括类似 useMemo(() => <MySvg />, [])
的东西,但关于那种感觉有些不对劲。
2条答案
按热度按时间xsuvu9jc1#
但是关于这个感觉有些不对劲。
但这正是设置该选项所做的。为每个人设置这个似乎有点过度了。由于memo使用了额外的函数和watch调用,它会增加额外的处理。
bfhwhh0e2#
当然,浅层属性比较比比较整个SVG对象(尤其是对于复杂的路径和插图)的调整器要少得多性能损失。