Помогите пожалуйста, уже неделю ломаю голову!
Есть форма с двумя инпутами, данные с формы сохраняются в объекте, передаются в reducer.
Как должно все работать:
При нажатии на кнопку редактирования, данные из объекта отображаются в форме от туда их можно редактировать, по нажатию на кнопку сохранить - данные в объекте обновляются.
Как сейчас работает
Вместо редактирования объектасоздается новый объект;(
ниже хэндлер который сохраняет данные с формы и передает их в reducer
const submitHandler = (event:FormEvent<HTMLFormElement>) =>{
event.preventDefault();
dispatch({type:'product/ProductAdd',payload:{
id:inputValue.id === '' ? nanoid() : inputValue.id,
name:inputValue.name,
price:inputValue.price,
}}
setInputValue(initialState);
setCancel(false)
}
Функция редактирования
const onClickEdit = (id: string) =>{
product.forEach((elem: { id: string; name: string; price: string; }) => {
if(id === elem.id){
dispatch({type:'product/ProductEdit',payload:{
id:elem.id,
name:elem.name,
price:elem.price
}})
}
if(id === elem.id){
setInputValue({
id:elem.id,
name:elem.name,
price:elem.price
})
}
return elem
});
setCancel(true);
}
Вот reducer:
case 'product/ProductEdit':
return {
...state,
product: state.product.map(elem => elem.id === action.payload.id ?
Object.assign({}, elem, action.payload) : elem )
};