Redux - Реагирует, как изменить состояние с полезной нагрузкой и другим значением - PullRequest
0 голосов
/ 28 февраля 2019

Интересно, есть ли у меня какое-то действие, например

.then((res) => {
                dispatch({
                    type: FETCH_DATA_SUCCESS,
                    payload: res
                })
            })

, и в моем редукторе я хочу изменить состояние с помощью полезной нагрузки действия.Так что в этом случае это ответ от 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
    }
}

вот как назначается в case: FETCH_DATA_SUCCESS полезная нагрузка действия и isLoading: true.

итак, я хочу, чтобы мое состояние было таким:

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

}]

как мне этого достичь?

1 Ответ

0 голосов
/ 28 февраля 2019

Проще, если ваше состояние 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
    }
}
...