繁体   English   中英

反应 redux-thunk 将 state 包装在另一个 state 中

[英]react redux-thunk wraps state inside another state

我是新手,现在我使用 redux 和 redux-thunk 创建一个简单的应用程序,它异步调用 API。 这是我的游戏gameAction:

export const fetchGamesStartAsync = () => {
return dispatch => {
    dispatch(fetchGamesStart());
    axiosGenCfg.post('/game/get',{
        "page" : 1,
        "size" : 10
    })
        .then(({ res }) => {
            dispatch(fetchGamesSuccess(res));
        })
        .catch(err => {
            dispatch(fetchGamesFailure(err.message));
        });
}
};


const fetchGamesStart = () => ({
    type: gameActionTypes.FETCH_GAMES_START,
});

const fetchGamesFailure = () => ({
    type: gameActionTypes.FETCH_GAMES_FAILURE,
});

const fetchGamesSuccess = (games) => ({
    type: gameActionTypes.FETCH_GAMES_SUCCESS,
    payload:{
        ...games
    }
});

这是我的gameReducer:

const INITIAL_STATE= {
    gamesList : null,
    isFetching: false,
    errorMessage : undefined
};

const gameReducer = (state = INITIAL_STATE, action) => {
    switch (action.type) {
        case gameActionTypes.FETCH_GAMES_START:
            return{
                ...state,
                isFetching: true
            };
        case gameActionTypes.FETCH_GAMES_SUCCESS:
            return{
                ...state,
                isFetching: false,
                gamesList: action.payload
            };
        case gameActionTypes.FETCH_GAMES_FAILURE:
            return{
                ...state,
                isFetching: false,
                errorMessage: action.payload
            };
        default:
            return {
                state
            };
    }
};

并在rootReducer

export default combineReducers({
    admin : adminReducer,
    game: gameReducer,

})

我还添加了 redux-logger 来检查 state 这就是我在控制台中得到的在此处输入图像描述

那么为什么我的游戏object中有2个级别的state呢? 管理员 object 也一样。 在我将 redux-thunk 添加到项目之前,我没有这个问题。 在添加 redux-thunk currentAdmin之前是admin的直接子级。 但是现在之间有一个state object。

default:
        return {
            state
        };

应该只是

default:
        return state

现在任何时候你点击defaultstate.whatever变成state.state.whatever

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM