Как добавить введённые данные в списки при этом не удаляя данные введённые раньше?
Есть сайт в котором вводиться имя и фамилия. Как сделать так чтоб все введённые имена и фамилии отображались на экране.
import React,{Component} from 'react';
import './App.css';
class PersonInput extends React.Component {
constructor(props) {
super(props);
this.state = {
first_name: "",
last_name: ""
};
this.newFighterFirstname = this.newFighterFirstname.bind(this);
this.newFighterLastname = this.newFighterLastname.bind(this);
this.myButton=this.myButton.bind(this);
}
newFighterFirstname(event) {
this.setState({first_name : event.target.value})
}
newFighterLastname(event) {
this.setState({last_name : event.target.value})
}
myButton(event) {
this.setState({first_name : ""}) //нужны для очищение полей в input
this.setState({last_name : ""}) //нужны для очищение полей в input
console.log(this.state.first_name , this.state.last_name)
event.preventDefault();
}
render() {
const fullname = [this.state];
const name = fullname.map((name,index) => <li key={index}>{name.first_name} {name.last_name}</li>);
return (
<div>
<form >
<input type="text"
placeholder="Имя"
value={this.state.first_name}
onChange={this.newFighterFirstname}
/>
<input type="text"
placeholder="Фамилия"
value={this.state.last_name}
onChange={this.newFighterLastname}
/>
<button onClick={this.myButton}>Сохранить</button>
<ul>
{name} //здесь отображались все введённые имена и фамилии а не только последние
</ul>
</form>
</div>
)
}
}
export default PersonInput;
Ответы (1 шт):
Автор решения: Prvz
→ Ссылка
Вы можете добавить еще одно поле в стейт и сохранять туда предыдущие введенные имена.
Вот обновленный код:
class PersonInput extends React.Component {
constructor(props) {
super(props);
this.state = {
first_name: "",
last_name: "",
history: [],
};
this.newFighterFirstname = this.newFighterFirstname.bind(this);
this.newFighterLastname = this.newFighterLastname.bind(this);
this.myButton=this.myButton.bind(this);
}
newFighterFirstname(event) {
this.setState({first_name : event.target.value})
}
newFighterLastname(event) {
this.setState({last_name : event.target.value})
}
myButton(event) {
event.preventDefault();
this.setState(prevState => ({
first_name : "",
last_name : "",
history: [
...prevState.history,
{
first_name: prevState.first_name,
last_name: prevState.last_name,
},
],
}));
}
render() {
return (
<div>
<form >
<input type="text"
placeholder="Имя"
value={this.state.first_name}
onChange={this.newFighterFirstname}
/>
<input type="text"
placeholder="Фамилия"
value={this.state.last_name}
onChange={this.newFighterLastname}
/>
<button onClick={this.myButton}>Сохранить</button>
<ul>
{this.state.history.map((name, index) => (
<li key={index}>{name.first_name} {name.last_name}</li>
))}
</ul>
</form>
</div>
)
}
}