Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 反应导航缓存组件_React Native_React Navigation - Fatal编程技术网

React native 反应导航缓存组件

React native 反应导航缓存组件,react-native,react-navigation,React Native,React Navigation,我是个新手,对以下内容有点困惑。我已经设置了一个StackNavigator,如图所示 const MyProjectNavigator = StackNavigator({ home: {screen: Other}, latest_news: {screen: LatestNews} } 当我想进入不同的屏幕时,我执行的导航是: navigate( latest_news, { otherParams : param1 } ); 到目前为止,该方法效果良好。 现

我是个新手,对以下内容有点困惑。我已经设置了一个
StackNavigator
,如图所示

const MyProjectNavigator = StackNavigator({
  home: {screen: Other},
  latest_news: {screen: LatestNews}
}
当我想进入不同的屏幕时,我执行的导航是:

navigate(
  latest_news, {
    otherParams : param1
  }
); 
到目前为止,该方法效果良好。

现在,假设最新消息组件在装载时从服务器查询大量数据,然后对该数据执行大量操作,按日期、作者、yadda-yadda排序。这需要一些时间来完成

你认为我该如何加快速度?例如,在iOS上,我通常会将我的
ViewController
保存在内存中,如果它可用,则显示它。当使用
navigate()
时,导航器似乎会创建组件的一个新实例,从而从一开始就重新加载和处理所有内容,让用户每次都等待

*TL;DR

我希望保留组件在导航中查询和处理的所有数据,这样处理就不必不断重复。 我可以把数据放在全局对象上,但这听起来不是一个好的解决方案


非常感谢。

您可以使用TabNavigator而不是StackNavigator

TabNavigators重用其路由项的相同实例

可以禁用选项卡栏的可见性:

const TabNav = TabNavigator({
    Home: { screen: HomePage},    
    NewsFeed1: { screen: NewsFeed}  ,
    NewsFeed2: { screen: NewsFeed}  ,
    NewsFeed3: { screen: NewsFeed}  ,
     // ...
    },
    {
        navigationOptions: ({ navigation }) => ({
            tabBarVisible: false,
        }),});
然后您可以手动导航-例如,使用按钮:

<Button title="NewsFeed1" onPress={() => this.props.navigation.navigate("NewsFeed1") }/>
this.props.navigation.navigate(“NewsFeed1”)}/>
请看一个简单的示例:


或者,如果导航功能中使用的键相同,是否有配置告诉导航器使用现有组件?此答案可能对您有所帮助: