React Redux — это официальный слой привязки пользовательского интерфейса React для Redux, который в настоящее время очень популярен. Он позволяет вашим компонентам React считывать данные из хранилища Redux и отправлять действия в хранилище для обновления состояния.

И если вы знакомы с React Redux, вы столкнетесь с путаницей при выборе между connect и useSelectorдля получения значений из хранилища, и они могут иметь одинаковые результаты.

Меньше стандартного кода

Чтобы было ясно, connect — это компонент высокого порядка, а useSelector — это хук. Использование useSelector может уменьшить шаблонный код и внедрить эту логику в сами компоненты.

Лучшая производительность

Как я сказал выше, connect — это HOC, что означает, что вы передаете свой собственный компонент, а соединение возвращает компонент-оболочку, который выполняет всю работу по подписке на магазин, запускает ваши mapState и mapDispatch и передает комбинированные реквизиты вашему собственному компонент. И connect заставит ваш компонент рендериться, если реквизиты, передаваемые вниз, изменились, кроме того, все новые значения из mapState также вызывают его повторный рендеринг, а компонент действует как PureComponent . Это означает, что connect по умолчанию имеет лучшую производительность.

С другой стороны, useSelector — это просто хук, который вы вызываете внутри своих функциональных компонентов, и у вас нет возможности изменить рендеринг при изменении реквизитов родителей. Это очень важно, когда дело доходит до оптимизации, но вы можете оптимизировать компоненты функций, которые используют useSelector с useMemo, чтобы предотвратить ненужные повторные рендеринги.

Устаревший реквизит и Дети-зомби

У useSelector есть несколько очень острых случаев, когда у него возникают проблемы, более подробная информация содержится в документах.

Заключение

Я рекомендую useSelector, если вы новичок в React и React Redux. Но когда вы понимаете, что оптимизируете, тогда выбирайте метод, который лучше всего соответствует вашему подходу.

Последние слова

Хотя мой контент бесплатен для всех, но если вы найдете эту статью полезной, вы можете купить мне кофе здесь