【发布时间】:2017-12-17 23:25:38
【问题描述】:
我有一个名为App 的父组件。它保存状态和改变状态的形式。
我删除了不重要的代码。当我在表单中输入内容时,state.item 中添加了一个对象项,但ToCompleteItemsComponent 没有更新。有没有办法在状态更改时更新该组件
class App extends Component {
state = {
items: []
}
submitItem=(e)=> {
e.preventDefault();
let items = this.state.items;
items.push({
name: this.state.ValuePlaceholder,
completed: false
});
this.setState({
items
});
}
render() {
return (<BrowserRouter>
<div className="wrap">
...
<form onSubmit={this.submitItem}>
<input type="text" />
</form>
<Route exact path="/"
render={props => <ToCompleteItemsComponent
items={this.state.items} /> }
/>
</div>
</BrowserRouter>
);
}
}
编辑这是组件
class ToCompleteItemsComponent extends Component {
componentWillReceiveProps(nextProps) {
// check this.props vs nextProps and setState!
// do whatever you want.
console.log(nextProps)
}
render(){
return(<div>
<ul className="items">
{
this.props.items.map( (item,id)=> <li key={id}>{item.name} <span>x</span></li>)
}
</ul>
</div>)
}
}
export default ToCompleteItemsComponent;
console.log(nextProps) 返回一个空数组
【问题讨论】: