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”)}/>
请看一个简单的示例:
或者,如果导航功能中使用的键相同,是否有配置告诉导航器使用现有组件?此答案可能对您有所帮助: