У меня проблемы с попыткой обновить вложенный объект с помощью useState. У меня есть форма, где пользователи могут добавлять / редактировать информацию об автомобиле. Поэтому в основном я работаю с автомобилем в местном штате, чтобы отобразить данные в форме.
//Local state to handle a Car
const [car, setCar] = useState({
brand: "Mazda",
vin: "JMB838783S",
location: {
address: "9098 West Alabama Street",
lat: "-22.73984",
long: "8.44538",
},
contact: {
phone: "+16758907676",
email: "car@provider.com",
}
});
Однако, когда я попытался отредактировать информацию об адресе или телефоне, я не могу заставить ее работать, используя функцию в onChange
const handleInputChanges = e => {
setCar({
...car,
[e.target.name] : e.target.value
})
};
Форма
<FormContainer onSubmit={handleSubmit}>
<DropPictureZone onImageDropped={setThumbnailDropped} />
<InputText
type="text"
name="brand"
placeholder="Brand"
value={name}
onChange={handleInputChanges}
/>
<InputText
type="text"
name="address"
placeholder="Address"
value={location.address}
onChange={handleInputChanges}
/>
<div className="p-grid">
<div className="p-col">
<InputText
type="text"
name="lat"
placeholder="Latitude"
value={location.lat}
onChange={handleInputChanges}
/>
</div>
<div className="p-grid">
<div className="p-col-4">
<InputMask
mask="(xxx)-xxx-xxxx"
name="phone"
placeholder="Phone Number"
value={contact.phone}
onChange={handleInputChanges}
/>
</div>
<div className="p-col">
<InputText
type="text"
name="email"
placeholder="Email"
value={contact.email}
onChange={handleInputChanges}
/>
</div>
</div>
<Button label="Save" />
</FormContainer>
Как правильно достичь этого? Спасибо.