javascript – Redux通过组合函数使用组合的reducer时访问状态的其他部分

更新

感谢@Dominic Tobias和@gabdallah发现我的尴尬的错误.

正确答案当然是

so try checking action.payload.

关于switch语句和动作对象的其他意见,我指的是我在我的例子中所做的错误,我已经纠正了.

想象一下,我结合了以下两个减速器;

import { combineReducers } from 'redux'
import { routerStateReducer } from 'redux-router'
import entries from './entries'

export default combineReducers({
  router: routerStateReducer,
  entries
})

在这种情况下,我想基于全球状态的另一部分突变条目状态;由redux-router提供的路由器状态,以便实现分页.

我该怎么做这样的事情?

// entries.js
import { ROUTER_DID_CHANGE } from 'redux-router/lib/constants'
const initialState = {}

function entries (state = initialState, action) {
  switch (action.type) {
    case ROUTER_DID_CHANGE:
      // How can I access `state.router` here in order to do something like this;
      if (routerState.location.pathname === '/entries') {
        return {
          ...state,
          page: routerState.location.query.page || state.page,
          limit: routerState.location.query.limit || state.limit
        }
      }
      return state
  }
}

一些其他的方法,想到;

>将路由器状态连接到Entries路由组件,使用componentWillMount生命周期方法来检查路由器状态,并调用具有页面和限制值的动作创建者依次突出条目状态.这将工作;然而,我正在使用一些转换中间件在安装它之前在路由组件上调用静态fetchData方法,从而获取数据,然后分页式动作创建者将被调用;不是所需的行为.
>听其他地方的路由器操作(即专用路由器redux模块),在条目存储上调用一个动作创建者,但我不知道这适用于redux-router,或者如何访问路由器部分全球商店.
>不要这样做只需在静态fetchData方法中查询路由器状态即可

其他有用信息;

相关的实现是通用应用程序大大受到反应减少通用热点的启发

相关部门

>反应0.14.2
> redux 3.0.3
反应路由器1.0.0-rc3
> redux-router 1.0.0-beta3

我该如何达到这个或类似的行为?我甚至认为这是正确的方法吗?

在开始之前的事情变得更简单的时候,人们会听历史对象上的popstate事件;)

看起来像所需的信息是在行动上?

history.listen((error, nextRouterState) => {
 ...
 store.dispatch(routerDidChange(nextRouterState));

和行动:

export function routerDidChange(state) {
  return {
    type: ROUTER_DID_CHANGE,
    payload: state
  };
}

所以尝试检查action.payload.

但是你的switch语句是使用action而不是action.type,所以有什么东西可以在那里..你不应该需要做action = {} – 请参见http://redux.js.org/docs/basics/Reducers.html

http://stackoverflow.com/questions/33805063/redux-accessing-other-parts-of-the-state-when-using-composed-reducers-via-combi

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – Redux通过组合函数使用组合的reducer时访问状态的其他部分