#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. Спасибо! Сработало отлично