Redux-使用有效负载和另一个值来反应如何更改状态

时间:2019-02-28 06:46:59

标签: reactjs redux react-redux

我想知道我是否有

之类的动作
.then((res) => {
                dispatch({
                    type: FETCH_DATA_SUCCESS,
                    payload: res
                })
            })

,在我的减速器中,我想用动作有效载荷来更改状态。因此,在这种情况下,它是来自api的响应。和一些有价值的状态,例如。 isLoading:isLoading为true时为false

在我的减速器中,如下所示:

let initialState = [{
    isLoading: false,
}]

export default (state = initialState, action) => {
    switch (action.type) {
        case FETCH_DATA_START:
            return [...state]
        case FETCH_DATA_SUCCESS:
            return [...state, ...action.payload]  
        case FETCH_DATA_FAILED: 
            return [state]
        default:
            return state
    }
}

情况:FETCH_DATA_SUCCESS 动作有效负载和isLoading:true中,这是分配方式。

所以最终我要使我的状态像这样:

State = [{
    isLoading: true,
    items: [{}] // items is coming from response of fetch call

}]

我该如何实现?

1 个答案:

答案 0 :(得分:4)

如果您的状态是Object而不是Array,则更容易。在您的减速器中尝试:

let initialState = {
    isLoading: false,
    error: null,
}

export default (state = initialState, action) => {
    switch (action.type) {
        case FETCH_DATA_START:
            return { ...state, isLoading: true }
        case FETCH_DATA_SUCCESS:
            return { ...state, items: ...action.payload, isLoading: false } 
        case FETCH_DATA_FAILED: 
            return { ...state, error: ...action.payload, isLoading: false }
        default:
            return state
    }
}