通过反应导航重新加载或重新渲染活动

时间:2019-06-26 13:58:12

标签: javascript react-native react-navigation

我将数据保存在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活动,这意味着我需要重新加载应用程序才能获取最后渲染的数据。

3 个答案:

答案 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。