Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在React Redux中加载微调器(Thunk)_Reactjs_Redux - Fatal编程技术网

Reactjs 在React Redux中加载微调器(Thunk)

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

我有一个redux商店,如下所示:

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非常感谢你,是的,我在做了一些研究后得到了这个问题,我现在已经解决了!非常感谢您的帮助和帮助:-)