React native 在React Native中导航到上一页时如何刷新数据?

React native 在React Native中导航到上一页时如何刷新数据?,react-native,React Native,我想做的事 当从第二页导航回第一页时,我想刷新数据 问题是,当我从第二页返回时,第一页中的onRefresh()不起作用 第一页 导出默认类首先扩展React.Component{ 建造师(道具){ 超级(道具); 此.state={ 刷新:错, 项目:[], }; } fetchData=async()=>{ const querySnapshot=db.items(); 常量项=[]; querySnapshot.forEach((doc)=>{ items.push(doc.data())

我想做的事

当从第二页导航回第一页时,我想刷新数据

问题是,当我从第二页返回时,第一页中的
onRefresh()
不起作用

第一页

导出默认类首先扩展React.Component{
建造师(道具){
超级(道具);
此.state={
刷新:错,
项目:[],
};
}
fetchData=async()=>{
const querySnapshot=db.items();
常量项=[];
querySnapshot.forEach((doc)=>{
items.push(doc.data());
});
this.setState({items});
}
componentDidMount(){
这是fetchData();
}
componentDidUpdate(prevProps){
这是一种刷新;
}
onRefresh(){
this.setState({刷新:true});
this.fetchData()。然后(()=>{
this.setState({刷新:false});
});
}
render(){
返回(
);
}
}
第二页

this.props.navigation.navigate('First','update');

如果您能给我一些建议,我将不胜感激。

假设您有两页
PAGE-A
PAGE-B

  • 创建名为
    ForegroundBackground.JS的JS文件
从“React”导入React;
从“react native”导入{View};
const ForegroundBackground=({navigation,bgCallback,fgCallback})=>{
React.useffect(()=>navigation.addListener('focus',()=>{
fgCallback&&fgCallback()
}), []);
React.useffect(()=>navigation.addListener('blur',()=>{
bgCallback&&bgCallback()
}), []);
返回();
};
导出默认前台背景;
  • 您可以在
    PAGE-A
    的渲染功能中使用它,方法是从屏幕
    props
    向其提供
    navigation
    对象
{alert(“resume”)}/>

有两种解决方案

  • 使用存储。在存储中定义一个状态,并在pageA和pageB中使用该状态。因此,如果您从pageB更改存储状态,它将自动反映在整个应用中

  • 您可以在导航时将函数从pageA传递到pageB。该函数的目的是在向后移动时刷新pageA的状态。例如:

  • this.props.navigation.navigate(“pageB”{
    重置数据:()=>{
    这是我的国家({
    mydata:“
    })
    }
    })
    
    从pageB导航时,您可以执行以下操作:

    this.props.navigation.state.params.resetData();
    this.props.navigation.goBack();
    

    我希望有帮助。如果您想获得更多帮助/代码/讨论等,请留言

    谢谢。A和B是不同的部件。更改B中数据的状态后,它会导航回A。然后我想刷新A中的数据。如果您能帮助我,我将不胜感激。我必须说您确实应该选择第二个选项。您好,我很抱歉,我来晚了。你如何传递最后两个陈述?我在导航状态下找到了
    不可序列化的值。选中:
    当我点击页面上的后退按钮时B@Paul导航到pageB时是否已通过重置数据功能。如果是这样,那么请在这里分享您的代码,以便进行详细观察。