Я пытаюсь обновить свое состояние (список пользователей) отредактированными полями определенного пользователя (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
(поскольку я пытаюсь «уменьшить» это )