Просто добавьте объект в пустой массив с помощью action creators, redux и thunk

#reactjs #redux #action #state

#reactjs #redux #Экшен #состояние

Вопрос:

Я хочу просто добавить нового «клиента» в мой пустой массив, clientList расположенный в моем clientReducer . Я вижу, что все работает четко, потому что, когда я console.log(state) в моем clientReducer , я вижу, что информация из входных данных прошла через отправку, создателя действия и теперь находится в редукторе. Моя проблема заключается в этом фрагменте кода здесь… Я пытаюсь продолжать добавлять клиентов в мой магазин redux.

Я пытался использовать this.setState({}) , но он его не читает.

Вот clientActions :

 export const addClient = (client) => {
    return(dispatch, getState) => {
        dispatch({type: 'ADD CLIENT', client})
    }
}
  

Вот clientReducer :

 const initState = {
    clientList: []
}

const clientReducer = (state = initState, action) => {
    switch (action.type) {

        case 'ADD CLIENT' : 
            let clientList =  [...state.clientList, action.client];
            this.setState({
              clientList : clientList
            })
            return state;
        
        default : return state;
    }
}    

export default clientReducer
  

Комментарии:

1. Я буду использовать firebase и добавлю его в firestore позже, но я хочу знать, как это сделать, просто используя redux и action creators. Спасибо!

Ответ №1:

Вы не делаете setState внутри reducer, вместо этого просто возвращаете обновленное состояние.

 const clientReducer = (state = initState, action) => {
    switch (action.type) {

        case 'ADD CLIENT' : 
            let clientList =  [...state.clientList, action.client];
            return {
              ...state,
              clientList : clientList
            }

        default : return state;
    }
}    

export default clientReducer
  

Комментарии:

1. Спасибо! Сработало отлично