import React, { Component } from "react";
import "./App.css";
import Person from "./Person/Person";
class App extends Component {
state = {
persons: [
{ id: "rew1", name: "Max", age: 28 },
{ id: "ewe", name: "Manu", age: 29 },
{ id: "qe", name: "Raq", age: 26 },
{ id: "123", name: "Raq", age: 26 }
],
otherState: "some other",
username: "suDima",
showPersons: false
};
deletePersonalHandler = personIndex => {
//const persons = this.state.persons.slice();
const persons = [...this.state.persons];
persons.splice(personIndex, 1);
this.setState({ persons: persons });
};
nameChangedHandler = (event, id) => {
const personIndex = this.state.persons.findIndex(p => {
return p.id === id;
});
const person = {
...this.state.persons[personIndex]
};
// const person = Object.assign({}. this.state.persons[personIndex]);
person.name = event.target.value;
const persons = [...this.state.persons];
persons[personIndex] = person;
this.setState({
persons: persons
});
};
togglePersonsHandler = () => {
const doesShow = this.state.showPersons;
this.setState({
showPersons: !doesShow
});
};
render() {
const style = {
};
let persons = null;
if (this.state.showPersons) {
persons = (
<div>
{this.state.persons.map((person, index) => {
return (
<Person
name={person.name}
age={person.age}
click={() => this.deletePersonalHandler(index)}
key={person.id} //нужно для реакта, чтобы он более еффективно ререндерил компоненты, значение должно быть уник
changed={event => this.nameChangedHandler(event, person.id)}
>
{index}
</Person>
);
})}
</div>
);
}
return (
<div className="App">
<h1>Hi, I'm a React App</h1>
<p>This is working</p>
<button style={style} onClick={this.togglePersonsHandler}>
Toggle Persons
</button>
{persons}
</div>
);
}
}
export default App;