Обновите только объект из другого объекта, а остальные параметры оставьте прежними

#javascript #reactjs #object

Вопрос:

У меня есть структура, подобная следующей:

 {
    firstname: '',
    company: {id: '', name: ''},
    nextAction: { by: '',
                  type: {id: '', name: ''}
                }
}
 

И следующие функции для обновления параметров ‘:

 const handleInputValue = (e: ChangeEvent<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>) => {
const { name, value } = e.target;

if (name === 'firstName') {
  setValues({
    ...values,
    [name]: value,
  });
  validate({ [name]: value });
} else if (name === 'company') {
  setValues({
    ...values,
    [name]: { name: name, id: value },
  });
  validate({ [name]: value });
} else if (name === 'nextAction') {
  setValues({
    ...values,
    nextAction: { ...nextAction, value: { name: name, id: value } },
  });
  validate({ [name]: value });
}
 

Это работает для обновления «имени» и «компании», и я хочу обновить только » тип » для «следующего действия» и сохранить начальное значение для «by», но я думаю, что синтаксис неверен. Есть какие-нибудь идеи?

Спасибо!

Ответ №1:

else if (name === 'nextAction') { setValues({ ...values, nextAction: { ...values.nextAction, value: { name: name, id: value } }, }); validate({ [name]: value }); }

Вы можете распределить значения с помощью ...values.nextAction

Комментарии:

1. Твое здоровье, приятель! Это сработало.