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