Я пытаюсь создать форму динамически на основе массива объектов.
Цель состоит в том, чтобы динамически создавать учетные записи пользователей по нажатию кнопки «Добавить пользователя» и передавать весь объект состояния пользователей в серверную часть.
Получение этой ошибки ' Элемент неявно имеет тип' any 'потому что тип' {name: string;возраст: строка;} 'не имеет подписи индекса '.
Я новичок в реакции!Помощь будет оценена.
Что я делаю не так?
import * as React from "react";
interface State{
users:User[]
}
interface Props{
}
interface User{
name:string,
age:number;
}
class App extends React.Component<Props,State> {
state = {
users: [{name:"", age:""}],
}
handleChange = (value:number,event : React.ChangeEvent<HTMLInputElement>) => {
let users = [...this.state.users];
console.log(event.target.value);
users[value][event.target.name] = event.target.value;
this.setState({ users }, () => console.log(this.state.users))
}
addUser = () => {
this.setState((prevState) => ({
users: [...prevState.users, {name:"", age:""}],
}));
}
handleSubmit = (e:any) => {
e.preventDefault();
console.log(this.state.users)
}
render() {
let { users} = this.state
return (
<form onSubmit={this.handleSubmit} >
<button onClick={this.addUser}>Add new cat</button>
{
users.map((val, id)=> {
return (
<div key={id}>
<input
type="text"
name="name"
value={users[id].name}
onChange = {(e) =>this.handleChange(id,e)}
/>
<input
type="text"
name="age"
value={users[id].age}
onChange = {(e) => this.handleChange(id,e)}
/>
</div>
)
})
}
<input type="submit" value="Submit" />
</form>
)
}
}
export default App;