ReactJs-子级在收到新道具时不会重新渲染

时间:2019-01-12 09:52:02

标签: javascript reactjs

我有很多人作为道具传递给孩子。 如果我将其他人删除/添加到数组中,则该孩子会更新

但是,如果我更改了其中一个人的属性(例如姓名),就好像孩子没有注意到道具不同。

有人遇到过这个问题吗?我检查了父状态是否正确更新。

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来完成。我可以验证,当我做完所有三件事时,父状态会更新(我可以看到父状态的名称发生了变化,子道具上的偶数甚至发生了变化,但不会更新)

0 个答案:

没有答案