我将数据保存在NewCar活动中,如下所示:
saveData() {
this.retrieveData;
this.state.DBCarName.push(this.state.CarName)
AsyncStorage.setItem('CAR',JSON.stringify(this.state.DBCarName));
this.props.navigation.navigate('Home');
}
然后我检索它以便在Home活动的文本中显示DBCarName状态:
componentWillMount(){
this.retrieveData();
}
retrieveData = async () => {
try {
const car= await AsyncStorage.getItem('CAR')
this.setState({ DBCarName: JSON.parse(car) })
} catch (err) {
console.log(err)
}
}
但是,当我按下执行saveData的按钮时,我会在上一次渲染时返回到Home活动,这意味着我需要重新加载应用程序才能获取最后渲染的数据。
答案 0 :(得分:1)
您可以使用“ willFocus”
this.props.navigation.addListener('willFocus', (payload) => {
this.retrieveData();
});
我在页面的内部构造函数中使用过。
当在NewCar屏幕上导航时,甚至使用后退或android硬件后退按钮导航时,此侦听器都可以工作
答案 1 :(得分:0)
在this.retrieveData();
方法中调用componentDidMount()
方法:
componentDidMount() {
this.retrieveData();
}
答案 2 :(得分:0)
您需要在导航期间传递参数:
this.props.navigation.navigate("routeName", {params})
然后检查“ routeName”的componentDidUpdate内部的参数,检查this.props.navigation.state.params
或者您需要使用redux。