React / Redux: TypeError: Невозможно прочитать свойство 'target' из неопределенного - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь обновить свое состояние (список пользователей) отредактированными полями определенного пользователя (firstName, lastName, email). Идея состоит в том, что всякий раз, когда пользователь изменяет значение ввода в форме, запускается действие создателя, чтобы обновить объект пользователя в состоянии с новыми значениями. Ниже мои кусочки кода:

По моему reducers.js:

case actionCreators.changeUserValues.getType():
return {
...state,
usersList: [
  ...state.usersList.map((user) => {
    if (user.username === action.payload.username) {
      return {
        ...user,
        [action.payload.name]: action.payload.value,
      };
    }
    return user;
  }),
],
editButtonDisabled: false,
submitButtonDisabled: true,
selectedUserProfile: {
  userObject: {
    ...state.selectedUserProfile.userObject,
    [action.payload.name]: action.payload.value,
  },
},
};

В файле actionCreators.js:

const changeUserValues = createAction(CHANGE_USER_VALUES, userData => userData);

const onValueChange = event => (dispatch, getState) => {
  const { value, name } = event.target;
  const { username } = getState().selectedUserProfile.username;
  return dispatch(changeUserValues({ name, value, username }));
};

В моем контейнере:

const mapDispatchToProps = dispatch => ({
  // some stuff
  onValueChange: () => dispatch(actionCreators.onValueChange()),
});

Чтобы проверить мой код, я редактирую форму и получаю эту ошибку TypeError: Cannot read property 'target' of undefined в коде onValueChange() actionCreator. Я не знаю, как пройти / захватить event (поскольку я пытаюсь «уменьшить» это )

1 Ответ

0 голосов
/ 29 августа 2018

Вы не проходите мероприятие на свой редуктор

const mapDispatchToProps = dispatch => ({
  // some stuff
  onValueChange: (event) => dispatch(actionCreators.onValueChange(event)),
});

Для более полного ответа ... когда вы используете входное значение, просто пропустите событие. Пока в mapDispatchToProps есть значение, оно должно быть полностью до вашего действия / редуктора.

<input onChange={e=>this.props.onValueChange(e)} />

...