Когда не использовать useMemo?
Я использую useMemo
слишком много в моем Functional Components
, и я беспокоюсь об этом, будет ли полезно использовать его в нашем приложении?
Почему я так часто им пользуюсь?
У меня слишком много Components
которые их не нужно перерисовывать, за исключением особых обстоятельств, и поэтому я избегаю их повторного рендеринга.
Код:
const App = props => {
const Comp1 = useMemo(()=> <Component1 {...props} a={a} />, [a]);
const Comp2 = useMemo(()=> <Component2 {...props} b={b} />, [b]);
const Comp3 = useMemo(()=> <Component3 {...props} c={c} />, [c]);
const Comp4 = useMemo(()=> <Component4 {...props} d={d} />, [d]);
const Comp5 = useMemo(()=> <Component5 {...props} e={e} />, [e]);
const Comp6 = useMemo(()=> <Component6 {...props} f={f} />, [f]);
const Comp7 = useMemo(()=> <Component7 {...props} g={g} />, [g]);
const Comp8 = useMemo(()=> <Component8 {...props} h={h} />, [h]);
const Comp9 = useMemo(()=> <Component9 {...props} i={i} />, [i]);
return (
<View>
{Comp1}
{Comp2}
{Comp3}
{Comp4}
{Comp5}
{Comp6}
{Comp7}
{Comp8}
{Comp9}
</View>
);
}
Может у меня больше 20 Functional Components
, и во всех них у меня такие же ситуации, как и я useMemo
крючки.
Мой вопрос: это bad experience
которые влияют плохо performance
вместо хорошего performance
? или нет, по моим условиям проблем нет.
1 ответ
Я предполагаю, что для React.memo применяется тот же общий совет, что и для shouldComponentUpdate и PureComponent: выполнение сравнений имеет небольшую стоимость, и есть сценарии, в которых компонент никогда не запомнит должным образом (особенно если он использует props.children). Так что не следует просто автоматически оборачивать все везде. Посмотрите, как ваше приложение ведет себя в производственном режиме, используйте сборки профилирования React и профилировщик DevTools, чтобы увидеть узкие места, и стратегически используйте эти инструменты для оптимизации частей дерева компонентов, которые действительно выиграют от этих оптимизаций.