Вопрос проверяет понимание механизма ререндеров React-компонентов, подключенных к Redux, и того, как компонент узнает об изменениях состояния.
Redux хранит состояние в едином store. Когда происходит dispatch(action), редьюсер создает новый объект состояния. После этого store вызывает всех подписчиков, зарегистрированных через метод store.subscribe(). React-Redux автоматически подписывает подключенные компоненты на store, используя этот механизм.
Библиотека React-Redux предоставляет два основных способа подключения: HOC connect и хуки useSelector/useDispatch. Оба используют контекст React для доступа к store и подписку на изменения. Когда состояние меняется, React-Redux сравнивает выбранные данные с предыдущими (через функцию селектора) и, если они изменились, вызывает ререндер компонента.
import { useSelector } from 'react-redux';
function Counter() {
const count = useSelector(state => state.counter.value);
return <div>{count}</div>;
}Здесь useSelector подписывается на store. При каждом изменении состояния он выполняет селектор и сравнивает результат с предыдущим. Если результат отличается, компонент ререндерится.
React-Redux использует строгое сравнение (===) по умолчанию. Если селектор возвращает новый объект каждый раз, это может вызвать лишние ререндеры. Для оптимизации можно использовать shallowEqual или мемоизацию селекторов.
Понимание этого механизма помогает избегать лишних ререндеров и писать эффективные React-приложения с Redux. Используйте селекторы, которые возвращают стабильные ссылки, и применяйте мемоизацию при необходимости.
Уровень
Рейтинг:
5
Сложность:
4
Навыки
JavaScript
Redux
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию