Делаю простенькую ToDo'шку на React.js с фильтром
Когда нажимаю на "ОК", в массив "users" добавляется новый элемент.
Но на сайте не обновляется и не появляется новый элемент.
Появляется только тогда, когда в строку поиска начинаю писать имя, потом всё стираю и вот тогда появляется
Почему и как исправить?
var users = [
{
id : 1,
name : 'Piter',
done : false
},
{
id : 2,
name : 'Mikle',
done : true
}
]
class Search extends React.Component{
state = {
}
change = (e) => {
var newText = e.target.value.trim();
this.props.filter(newText);
}
render(){
return (
<div>
<input type="text" onChange={this.change} />
</div>
)
}
}
class Item extends React.Component {
state = {
}
render(){
return <h1>{this.props.data.name}</h1>
}
}
class App extends React.Component {
state = {
people : this.props.data
}
filterList = (newText) =>{
var newMass = this.props.data.filter(function(user){
return (user.name).toLowerCase().search(newText.toLowerCase()) !== -1;
})
this.setState({people : newMass})
}
press = () => {
users.push({id: 3, name: 'Hello', done: false})
console.log(users);
}
render(){
return(
<div className="mainBlock">
<button type="submit" onClick={this.press}> OK </button>
<Search filter={this.filterList}/>
{
this.state.people.map(function(user){
return <Item key={user.id} data={user} />
})
}
</div>
)
}
}
ReactDOM.render(<App data={users}/>, document.getElementById('root'))