user_of_toster
@user_of_toster

Как предотовратить ре-рендеринг?

Есть var1, var2 в состоянии redux'a. Изменение var1 триггерит UseEffect((var2)=>{changeVar2}, [var1]). Компонент ре-рендерится два раза.

Как сделать так, чтобы компонент ре-рендерился только при изменении var2?
Пробовал вариант через React.memo, где проверка пропсов:
const isEquivalent = (prevProps, nextProps) => {
    return prevProps.var1 < nextProps.var2 ? true : false
}

Но проблема в том, что memo предотовращает выполнение всего компонента, в том числе и эффектов, а не только рендеринг. Из-за этого useEffect не выполняется и var2 не изменяется. А мне нужно предотовратить только ре-рендеринг, а не выполнение useEffect.
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 1
GreyCrew
@GreyCrew
Full-stack developer
Поменяй код.
const isEquivalent = (prevProps, nextProps) => {
    if(prevProps.var1 !== nextProps.var1) {
        return false
    } else {
        return true
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы