我有一個React應用程序,其中來自父組件的道具被傳遞給子組件,然後道具設置子組件的狀態。使用React子組件上的道具更新狀態
將更新後的值發送給父組件後,子組件未更新具有更新的道具的狀態。
如何獲取它來更新子組件上的狀態?
我的削減的代碼:
class Parent extends React.Component {
constructor (props) {
super(props);
this.state = {name: ''}
}
componentDidMount() {
this.setState({name: this.props.data.name});
}
handleUpdate (updatedName) {
this.setState({name: updatedName});
}
render() {
return <Child name={this.state.name} onUpdate={this.handleUpdate.bind(this)} />
}
}
class Child extends React.Component {
constructor (props) {
super(props);
this.state = {name: ''}
}
componentDidMount() {
this.setState({name: this.props.name});
}
handleChange (e) {
this.setState({[e.target.name]: e.target.value});
}
handleUpdate() {
// ajax call that updates database with updated name and then on success calls onUpdate(updatedName)
}
render() {
console.log(this.props.name); // after update, this logs the updated name
console.log(this.state.name); // after update, this logs the initial name until I refresh the brower
return <div>
{this.state.name}
<input type="text" name="name" value={this.state.name} onChange={this.handleChange} />
<input type="button" value="Update Name" onClick={this.handleUpdate.bind(this)} />
</div>
}
}
你知道那些你只想說「我愛你」的隨機SO海報,這是其中的一次。謝謝你仁慈的人。 – markau
整天都在找這個!試圖將狀態更新爲孩子,並且這樣做了 – William