在Redux Reducer中访问URL

时间:2019-06-19 08:27:36

标签: reactjs redux react-router-v4 react-intl

我有一个语言简化器,它具有初始语言环境值:

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

语言环境的初始值来自当前URL。如何访问我的reducer中的URL和语言环境参数以初始化语言环境?我正在使用React-Router v4

1 个答案:

答案 0 :(得分:1)

根据您的需要,您(至少)有两个选择:

1)最简单的方法是从应用程序加载的第一页分配一个操作,该操作使用Route props将所需的url参数传递给减速器。有关指南,请参见this page。如果您可以将Route状态和应用程序其余部分的状态分开,那么这就是方法。

2)一种更复杂的方法是使用connected-react-router之类的中间件来保持您的商店和React Router同步。这将为您提供商店中的router属性(包含历史记录,位置等),您可以随时根据需要读取。