Деструктуризация обьекта в useSelector хранит все данные этого обькта? Как правильно использовать деструктуризацию с useSelector

столкнулся с такой проблемой - решил оптимизировать React приложение и выяснил, что когда я деструктурирую два значения из обьекта, const { quoteCurr, baseCurr } = useAppSelector(state => state.portfolio.selectedCoins), остальные значение обьекта при изменении в других компонентах заставляют этот компонент ре-рендериться.

Подскажите пожалуйста, что делать в такой ситуации? Не использовать деструктуризацию и создавать каждую переменную отдельно? Вот так: const baseCurr = useAppSelector(state => state.portfolio.selectedCoins.baseCurr); const quoteCurr = useAppSelector(state => state.portfolio.selectedCoins.quoteCurr);

Вот что хранится в компоненте при деструктуризации, мне нужны только два значения обьекта, но компонент следит за именением 4

введите сюда описание изображения


Ответы (1 шт):

Автор решения: VerZsuT

При изменении состояния будут вызваны все селекторы, что ты используешь. Рендер произойдёт в том случае, если селектор возвратит значение, отличное от предыдущего. В том числе если сделать вот так:

const { count } = useSelector(state => ({ count: state.count }))

В данном случае компонент будет рендериться от любого изменения состояния, так как селектор всегда возвращает новый объект.

→ Ссылка