我在这个无法解决的问题上停留了数周。我经历过很多不同的解决方案,但没有一个起作用。
假设我有A组分和B组分
A组件:包含一个平面列表,当单击一项时,将我带到B组件。
组件B:包含组件A项的详细信息,当单击按钮更新数据时,组件A正在使用的数据处于当前状态,这使单击的项变为橙色。我想单击后退按钮以更新组件A中的那些数据,并且实际上将单击的项目显示为橙色,现在什么都没有发生。.
组件A:
async interventionList(){
const planningList = await getInterventionList(this.state.userToken, '2019-02-27', '2019-02-27');
this.setState({list: planningList});
}
renderItem = ({ item }) => (
<View>
<TouchableHighlight onPress={
() => this.props.navigation.navigate('InterventionStart', { getIntervention: () => this.interventionsList() })}>
<View style={[styles.block, this.state.current !== null && this.state.current.remoteInterventionId === item.num ? styles.began : styles.notbegan]}>
<Text> {SomeData} <Text>
</View>
</View>
</TouchableHighlight>
</View>
)
组件B:
componentWillUnmount() {
this.props.navigation.state.params.getIntervention();
}
但是什么也没发生。我试图控制台日志,以查看那些功能在单击后退按钮后是否被调用,而它们却是...所以我不明白我在做什么错,或者根本不是这样做的方法吗?
答案 0 :(得分:1)
您可以使用willFocus
的{{1}}方法
在您的componentDidMount或您的构造函数中
react-navigation
只要您的组件即将成为焦点,它将调用您的this.willFocus = this.props.navigation.addListener('willFocus', () => {
this.interventionList();
});
方法。确保删除interventionList
componentWillUnmount
供参考 https://reactnavigation.org/docs/en/navigation-events.html