Я не могу обновить свое состояние в Redux с помощью отправленного действия (используя Redux-starter-kit) - PullRequest
0 голосов
/ 01 октября 2019

Я очень новичок в Redux и React-Native. У меня есть state, который содержит массив Expense объектов. Один из атрибутов - comment, который я пытаюсь обновить из модального режима.

Я думаю, что мой код в основном правильный, но по какой-то причине state не обновляется с недавно обновленнымпредмет.

Код Модального Компонента ниже:

 const expense = useSelector(state => state.expenses.model.find( expense => expense.id === expenseId ))

  const updateExpense = (updatedExpense) => dispatch(model.actions.updateExpense(updatedExpense))
  const addComment = () => {
    const updatedExpense = {
      ...expense,
      comment: "hi"
    }
    updateExpense (updatedExpense)
  }

Просто заметьте, index является атрибутом объекта expense.

, а затем вот где я установилмои данные model Хранилище и редукторы:

    export const model = createSlice({
  slice: "model",
  initialState: [],
  reducers: {
    fetchSuccess: (state, { payload }) => (state = payload),
    updateExpense: (state, {payload}) => (
      console.log ("...State: ", state),
      console.log ("Payload", payload),
      state = [
        ...state.slice(0,payload.index),
       payload,
        ...state.slice (payload.index)
    ],
   /* state = {
...state, [payload.index]:{
  ...state[payload.index],
  comment: payload.comment*/
    console.log ("State: ", state)
    )
  }
});

Мои журналы говорят мне, что payload содержит правильную информацию, просто не обновляется state.

Приветствия.

Ответы [ 2 ]

2 голосов
/ 01 октября 2019

Похоже, вы используете redux-starter-kit, но вы не говорите, что вы или нет. Если это не так, игнорируйте этот ответ.

Прямо сейчас вы устанавливаете state в своем редукторе: state является локальной ссылкой на редуктор. Вам нужно либо изменить состояние свойство , либо вернуть новое состояние , , как описано в rsk docs , например,

updateExpense: (state, { payload }) => [
  ...state.slice(0, payload.index),
  payload,
  ...state.slice(payload.index)
]

То же самое относится к fetchSuccess.

0 голосов
/ 01 октября 2019

Вы должны вернуть измененное состояние, ваш код не возвращает состояние

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...