Состояние обновления работает, если состояние, которое я пытаюсь обновить, находится вне массива пользователей. Но так как у меня несколько пользователей, мне нужно, чтобы состояние было внутри объектов и все равно обновлялось
Я продолжаю получать ошибку TypeError: Cannot read property 'name' of undefined
Я думал об установке состояния внутри циклано мне сказали, что это плохая идея.
Так что [e.target.name]: e.target.value
был единственным кодом, который я мог найти для выпадающих списков.
Я пытался передать id для каждого из пользователей, но не знал, как изменить состояние, используя это или какое условие поставить.
import React, { Component } from 'react'
export default class App extends Component {
state = {
users: [
{
id: uuid(),
firstName: 'John',
lastName: 'Doe',
favColor: 'None'
},
{
id: uuid(),
firstName: 'Jane',
lastName: 'Doe',
favColor: 'None'
}
]
}
handleChange = (e) => {
this.setState({
[e.target.name]: e.target.value
})
}
render() {
return (
<div>
{this.state.users.map((user) => {
return <div key={user.id}>
<h1>{user.firstName}</h1>
<h1>{user.lastName}</h1>
<form>
<select
name="favColor"
value={user.favColor}
onChange={() => this.handleChange(user.id)}
>
<option value="None" disabled>None</option>
<option value="Blue">Blue</option>
<option value="Red">Red</option>
<option value="Green">Green</option>
</select>
</form>
<h1>Fav Color: {user.favColor}</h1>
<hr />
</div>
})}
</div>
)
}
}
Я ожидаю, что раскрывающиеся списки изменят состояние отдельно для каждого из пользователей