2016-03-04 43 views
7

虽然有工作作出反应母语,我有是在对方,其中一些改变它们下面的组件的状态,像这样的顶推的几个组成部分:如何在运行navigator.pop()后刷新React状态?

社会 - >组 - >添加

集团

然而,当我运行navigator.pop(),回到前一个组件,在组件下(例如,添加一组用户的账号后)(在这种情况下,“组”),将不与最新的状态更新。

我在这里做错了什么?

+0

我不认为这与导航器有任何关系。您需要改变顶部组件的状态,并触发重新渲染。 –

回答

3

原来我能够通过“网上论坛”组件上插入一个componentWillUpdate来解决这个问题,那就是,每当组组件更新,它会触发一个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, 
    }); 
    } 
});} 
+3

我不认为你可以在componentWillUpdate功能SETSTATE。反应原生文件说。 注: 你不能在这个方法中使用this.setState()。如果您需要更新状态以响应支柱更改,请改用componentWillReceiveProps。 https://facebook.github.io/react/docs/component-specs.html –

+1

获得无尽的电话,如果我把上的setState componentWillUpdate,任何想法如何避免这种情况? – jatazoulja

相关问题