Если свойства селектора часто меняются, имеет смысл хранить их на отдельных селекторах.По крайней мере, в случае селекторов, где обычно объект изменяется целиком, я предпочитаю создать один селектор для пользователя.
В качестве примера, скажем, у нас есть объект:
const profile = {
name : 'John',
email,
timezone,
...
locale : 'en',
}
Если создан компонент <Translate>
, который тесно связан с языковым стандартом, но не с другими частями профиля, такими как имя и т. Д., Тогда имеет смысл использовать селектор для getLocale()
(и это то, как мы реализуем нашу локальcomponent).
С другой стороны, если у вас есть страница профиля, где пользователи могут редактировать различные поля, то эта страница, скорее всего, должна часто повторно визуализироваться при внесении изменений, поэтому имеет смысл простона этой странице есть селектор getProfile()
.
Мы обрабатываем довольно сложное и большое состояние Redux, например, потому что мы используем currentUserId
или userName
повсюду в нашем веб-приложении.У нас есть специальные селекторы для них, чтобы воспользоваться преимуществами запоминания.
Но для теста или задания мы используем один селектор getQuizContents()
вместо его внутренних полей, так какмы знаем, что большинству компонентов, которые нуждаются в информации о тесте, нужно не просто имя, а множество внутренних полей, таких как дата, количество вопросов и т. д.