我有很多人作为道具传递给孩子。 如果我将其他人删除/添加到数组中,则该孩子会更新。
但是,如果我更改了其中一个人的属性(例如姓名),就好像孩子没有注意到道具不同。
有人遇到过这个问题吗?我检查了父状态是否正确更新。
class Parent extends Component {
this.state = {
persons: []
}
componentDidMount() {
this.getPersons(); //This function sets the state of parent
}
getPersons = () => fetch('/persons')
.then(res => res.json())
.then(persons => this.setState({persons: persons}))
.catch(function(error) {
console.log('Could not fetch persons')
})
render() {
<Child persons={this.state.persons}/>
<Child2 getPersons={this.getPersons}/>
}
class Child2 extends Component {
addPerson() {
//Functionality to add person
... this.props getPersons();
}
updatePerson() {
//Functionality to update person
... this.props getPersons();
}
deletePerson() {
//Functionality to delete person
... this.props getPersons();
}
注意:添加/更新/删除功能都分别通过使用POST / PUT / DELETE提取到API来完成。我可以验证,当我做完所有三件事时,父状态会更新(我可以看到父状态的名称发生了变化,子道具上的偶数甚至发生了变化,但不会更新)