URL-адрес доступа в редукторе Redux

У меня есть языковой редуктор с начальным значением локали:

const LanguageReducer = function(
  state = { locale: "en", messages: {} },
  action = {}
) {
  switch (action.type) {
    case CHANGE_LANGUAGE_SUCCESS:
    ...
      return state;
    default:
      return state;
  }
};

Начальное значение локали исходит из текущего URL-адреса. Как я могу получить доступ к параметру URL и локали в моем редукторе, чтобы инициализировать локаль? Я использую React-Router v4.

вместо доступа к url в редукторе вы можете передать locale в качестве полезной нагрузки, куда вы отправляете action

Harish 19.06.2019 10:35

Вы должны содержать свои редукторы в чистоте. Я бы отправил действие инициализации где-нибудь при запуске приложения (скажем, когда монтируется основной компонент) и передал URL-адрес в качестве полезной нагрузки действия.

MorKadosh 19.06.2019 10:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
2
1 349
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вас есть (как минимум) два варианта, в зависимости от ваших потребностей:

1) Самый простой способ — отправить действие с первой страницы, которую загружает ваше приложение, которое использует Route props для передачи параметра URL, который вам нужен, вашему редюсеру. См. эта страница для руководства. Это правильный путь, если вы можете разделить свое состояние Route и состояние остальных приложений.

2) Более сложный метод — использовать промежуточное ПО, такое как подключенный реактивный маршрутизатор, для синхронизации вашего магазина и React Router. Это даст вам свойство router в вашем магазине (содержащее историю, местоположение и т. д.), которое вы можете прочитать, когда вам нужно.

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

Hadi Ranjbar 19.06.2019 10:55

Доступно ли в редукторе для инициализации локали? Могу ли я использовать его в рендеринге на стороне сервера?

Hadi Ranjbar 19.06.2019 12:11

Другие вопросы по теме