Reactjs 在React Redux中加载微调器(Thunk)
我有一个redux商店,如下所示:Reactjs 在React Redux中加载微调器(Thunk),reactjs,redux,Reactjs,Redux,我有一个redux商店,如下所示: const initState = { data: {}, isFetching: false, }; 我有一个异步函数来获取状态的数据: const requestSideBarData = async(state, actions) => { const request = actions.request let newState = state; const promises = []; Ob
const initState = {
data: {},
isFetching: false,
};
我有一个异步函数来获取状态的数据:
const requestSideBarData = async(state, actions) => {
const request = actions.request
let newState = state;
const promises = [];
Object.keys(newState.data).forEach(element => {
promises.push(axios.post(`${ApiEndPoints.getDropDownHeaders}${element}`,request))
});
const results = await Promise.all(promises);
var index = 0;
Object.keys(newState.data).forEach(element => {
newState.data[element] = results[index++].data;
})
return newState;
};
以下是我的开始和结束减速器:
const fetchSideBarDataBegin = (state) => {
return {
...state,
isFetching: true,
}
};
const fetchSideBarDataEnd = (state) => {
return {
...state,
isFetching: false,
}
};
以下是我的操作功能:
export const fetchSidebBatData = (dateData,selections) => {
return {
type: actions.FETCH_SIDEBAR_DATA_BEGIN, //Here there should be some combine action
dateData: dateData,
selections: selections,
requests: {...dateData,...selections}
}
};
最后是我的减速机:
const reducer = ( state = initState, action ) => {
switch ( action.type ) {
case actionTypes.FETCH_SIDEBAR_DATA_REQUEST: return fetchSideBarData(state, action);
case actionTypes.FETCH_SIDEBAR_DATA_BEGIN: return fetchSideBarDataBegin(state);
case actionTypes.FETCH_SIDEBAR_DATA_END: return fetchSideBarDataEnd(state);
default: return state;
}
};
我打算把这三个减速机合并成1:
执行此操作的正确方法是什么?在action对象中有一个操作类型FETCH_SIDEBAR_DATA和一些其他属性,告诉您它是begin、request还是end。我写过关于使用抽象来组合redux操作的文章。再次阅读这个问题后,您的设置非常非常错误。您正试图从减速器中触发API调用。不要那样做。减速器不应有任何副作用。看起来你问了一个类似的问题,得到了一个可靠的答案嗨@LindaPaiste非常感谢你,是的,我在做了一些研究后得到了这个问题,我现在已经解决了!非常感谢您的帮助和帮助:-)