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

Sme*_*mee 7 javascript ios reactjs react-native

使用React Native时,我有一些组件被推到彼此之上,其中一些组件会改变它们下面组件的状态,如下所示:

社交 - >群组 - >添加群组

但是,当我跑navigator.pop()回到前一个组件时(例如,在将一个组添加到用户的帐户之后),下面的组件(在这种情况下,"组")将不会刷新最新状态.

我在这做错了什么?

Sme*_*mee 3

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

componentWillUpdate() {
  this.loadGroupsData();
}
Run Code Online (Sandbox Code Playgroud)

...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,
    });
  }
});} 
Run Code Online (Sandbox Code Playgroud)

  • 我认为您不能在 componentWillUpdate 函数中 setState 。React Native 文档说。注意:在此方法中不能使用 this.setState()。如果您需要更新状态以响应 prop 更改,请改用 componentWillReceiveProps。https://facebook.github.io/react/docs/component-specs.html (3认同)