【问题标题】:Prevent unmounting of react-navigation stacknavigator screen防止卸载 react-navigation stacknavigator 屏幕
【发布时间】:2019-06-21 14:01:45
【问题描述】:

我有屏幕 A(仪表板)和屏幕 B(详细信息)。

当您单击仪表板中的按钮时,您将导航到详细信息。这是通过 react-navigation (v1.5) 堆栈路由器完成的。当您向后导航时,详细信息屏幕将被卸载并返回仪表板。

当您返回导航时,是否可以保持安装详细信息屏幕?

【问题讨论】:

  • 你有什么有用的发现吗?

标签: react-native react-navigation


【解决方案1】:

尝试使用最新的 react-navigation v3。这样,stackNavigator 将不会在导航期间卸载组件。示例

import React from 'react';
import { Button, View, Text } from 'react-native';
import { createStackNavigator, createAppContainer } from 'react-navigation';

class HomeScreen extends React.Component {
  render() {
    return (
      <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
        <Text>Home Screen</Text>
        <Button
          title="Go to Details"
          onPress={() => this.props.navigation.navigate('Details')}
        />
      </View>
    );
  }
}

【讨论】:

  • 嘿,谢谢!据我了解,从 details => home 导航回来时,v3 仍会卸载细节?
  • 啊,是的,如果组件位于堆栈的最顶端,组件将被卸载,如果关闭则弹出。弹出组件可以通过导航(到从顶部开始的第二个路由)、.pop()、.popToTop() 和一些方法来完成。如果您真的想保留它们,您应该使用自定义导航器或将您的状态移出组件。
  • 是的,我正在研究自定义导航器路线。我需要组件保持挂载的原因是因为它是一个由一些注入的 javascript 控制的 webview。每次挂载时,webview 都会再次加载页面,这可能需要 +10 秒(不要问为什么 :))。
  • @YvoCilon 你有解决办法吗?
  • 我会补充一点,因为这个答案的日期,react-navigation 已经转移到 v5 并且 api 非常不同。
猜你喜欢
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 2021-08-12
  • 2018-03-22
  • 1970-01-01
  • 2018-11-28
相关资源
最近更新 更多