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

use*_*410 0 reactjs redux react-redux

我想知道我是否有一些类似的行动

.then((res) => {
                dispatch({
                    type: FETCH_DATA_SUCCESS,
                    payload: res
                })
            })
Run Code Online (Sandbox Code Playgroud)

在我的减速器中,我想用动作有效负载改变状态。所以在本例中它是来自 api 的响应。以及状态中的一些值,例如。isLoading: false 与 isLoading:true

在我的减速器中如下:

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
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是在FETCH_DATA_SUCCESS 操作负载和 isLoading: true 情况下如何分配。

所以最后我想让我的状态像这样:

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

}]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Vu *_*Luu 5

Object如果您的状态是 a而不是,那就更容易了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
    }
}
Run Code Online (Sandbox Code Playgroud)