Javascript 运行navigator.pop()后如何刷新React状态?

Javascript 运行navigator.pop()后如何刷新React状态?,javascript,ios,reactjs,react-native,Javascript,Ios,Reactjs,React Native,在使用React Native时,我有几个组件被推到彼此的顶部,其中一些组件会更改它们下面组件的状态,如下所示: 社交->组->添加组 但是,当我运行navigator.pop()返回到上一个组件时(例如,在将组添加到用户帐户后),下面的组件(在本例中为“组”)不会以最新状态刷新 我在这里做错了什么?事实证明,我能够通过在“组”组件上插入一个组件willupdate来解决这个问题,也就是说,每当组组件更新时,它就会触发loadGroupsData函数: componentWillUpdate()

在使用React Native时,我有几个组件被推到彼此的顶部,其中一些组件会更改它们下面组件的状态,如下所示:

社交->组->添加组

但是,当我运行
navigator.pop()
返回到上一个组件时(例如,在将组添加到用户帐户后),下面的组件(在本例中为“组”)不会以最新状态刷新


我在这里做错了什么?

事实证明,我能够通过在“组”组件上插入一个
组件willupdate
来解决这个问题,也就是说,每当组组件更新时,它就会触发loadGroupsData函数:

componentWillUpdate() {
  this.loadGroupsData();
}
…loadGroupsData函数检查是否存在任何差异,如果存在差异,则加载:

loadGroupsData() {
api.getUserGroups(this.state.userId, (data) => {
  data.forEach((group, index) => {
    group.groupname = group.groupname;
  });
  if (this.state.dataSource._cachedRowCount === undefined || this.state.dataSource._cachedRowCount !== data.length) {
    this.setState({
      usersGroups: data.map(data => data.groupname),
      dataSource: this.state.dataSource.cloneWithRows(data),
      loaded: true,
    });
  }
});} 

我不认为这和导航器有任何关系。你需要改变顶部组件的状态,因为它将触发重新渲染。我认为你不能在componentWillUpdate函数中设置状态。react本地文档说。注意:在此方法中不能使用此.setState()。如果您需要更新状态以响应道具更改,请改用componentWillReceiveProps。如果我在componentWillUpdate上设置setState,就会接到无数的呼叫,你知道如何防止这种情况吗?