在 Redux reducer 中访问 URL

Access URL in Redux reducer

我有一个具有初始语言环境值的语言缩减器:

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

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

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

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

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