Reactjs 从不同的减速器访问变量的推荐方法是什么?

Reactjs 从不同的减速器访问变量的推荐方法是什么?,reactjs,redux,Reactjs,Redux,从不同的减速器访问变量的推荐方法是什么 import { createStore, combineReducers } from 'redux'; import mainReducer from './reducers/main'; import configReducer from './reducers/config'; const rootReducer = combineReducers({ main:mainReducer, config:configReducer

从不同的减速器访问变量的推荐方法是什么

import { createStore, combineReducers } from 'redux';
import mainReducer from './reducers/main';
import configReducer from './reducers/config';


const rootReducer = combineReducers({
    main:mainReducer,
    config:configReducer
});

const store = createStore(rootReducer);

export default store;
我有两个不同的reducer,在mainReducer中有一个操作,我想访问configReducer中的一个变量。使用Redux的正确方法是什么

export default function (state, action) {
  switch (action.type) {
      case "UPDATE_ACTIVE":
      //need to check variable options inside configReducer
      default:
        return state;
    }
}

基本上,reducer只返回全局状态的
切片
,即
存储

如果您使用的是像
thunk
这样的中间件,您可以像这样共享数据:

export function updateActive(params) {
  return (dispatch, getState) => {
    const { config } = getState(); // the part you want to access.

    dispatch({
      type: UPDATE_ACTIVE,
      options: config.options,
      params,
    });
  };
}
因此,您将获得
操作
本身中的所有数据,然后使用操作类型进行分派

您可以在以下站点上阅读有关减速器之间共享状态的更多信息:


  • 当你说variable时,你指的是全局状态,对吗?reducer存储中的一个变量。你能发布
    configReducer
    的代码和你想要访问的变量吗。我认为变量是指使用
    configReducer
    修改的状态,即全局状态。变量在store.config中,类似于store.config.options。我想在mainReducer而不是configReducer中访问它;const getStore=()=>{return store;}导出默认存储;所以我可以这样做?如果我没有中间件怎么办?@gosa如果你没有使用任何中间件,即甚至没有
    thunk
    ,那么你可以直接将
    store
    导入reducer并执行
    store.getState()
    。但我强烈建议您使用
    thunk
    ,您将在我在答案中共享的两个链接中找到足够的信息。我得到:错误:在执行reducer时,您不能调用store.getState()。减速器已将状态作为参数接收。从顶部减速器向下传递,而不是从存储中读取。在React 16和Redux中4@gosa在分派时,应该调用store.getState(),而不是在reducer的开关盒内。基本上,您的操作将有效负载设置为
    config.options