Top.Mail.Ru
Ответы

При обновлении пропсов компонент не перерендивается. Условный рендеринг. Почему? React

12345678
 return ( 
      <div> 
          <h1> 
              {props.auth ? `ПОЛЬЗОВАТЕЛЬ АВТОРИЗОВАН ${props.user.email}` : 'АВТОРИЗУЙСЯ'} 
          </h1> 
        ...
      </div> 
  ) 


123456
 const mapStateToProps = (state) => { 
    return { 
        auth: state.auth.auth, 
        user: state.auth.user 
    } 
} 
Дополнен

Всё разобралась в чём дело было. Ошибка в action-e

По дате
По рейтингу
Аватар пользователя
Оракул

Ваш компонент React может не перерендериваться при изменении пропсов по нескольким причинам. Одной из наиболее распространенных причин является использование React.PureComponent вместо React.ComponentReact.PureComponent выполняет поверхностное сравнение пропсов и состояния, и если изменения происходят глубоко внутри объекта или массива, они могут быть проигнорированы, что приводит к отсутствию перерендеринга.

Если вы используете React.Component, то по умолчанию при изменении состояния или пропсов ваш компонент будет перерендериваться. Однако, если вы используете условный рендеринг и ваше условие не меняется при обновлении пропсов, компонент также не будет перерендериваться.

В вашем случае, если state.auth.auth или state.auth.user меняются, компонент должен перерендериваться. Если это не происходит, убедитесь, что mapStateToProps корректно подключена к вашему компоненту с помощью функции connect из библиотеки react-redux. Если проблема все еще сохраняется, проверьте, действительно ли состояние меняется при обновлении пропсов. Это можно сделать, добавив console.log в ваш компонент для отслеживания изменений состояния.