如何在 StackNavigator 中卸载模糊的屏幕?

2023-12-24

我在用着反应导航 x5, 我有StackNavigator那正在加载一堆屏幕。我想在模糊时卸载一个特定的屏幕组件以获得与使用相同的结果unmountOnBlur当使用一个DrawerNavigator.

我怎样才能做到这一点?


目前有三种方法可以做到这一点,因为5.x。你可以

  • use useFocusEffect挂钩来触发操作(推荐),或者
  • use useIsFocused钩子,或
  • focus event
的例子useFocusEffect
import { useFocusEffect } from '@react-navigation/native';

function Sample(props) {
  const [shouldHide, setShouldHide] = React.useState(false);

  useFocusEffect(() => {
    setShouldHide(false)
    return () => {
       setShouldHide(true)
    }
  });

  return shouldHide ? null : <InnerComponent {...props} />;
}
的例子useIsFocused hook
import * as React from 'react';
import { Text } from 'react-native';
import { useIsFocused } from '@react-navigation/native';

function Profile() {
  // This hook returns `true` if the screen is focused, `false` otherwise
  const isFocused = useIsFocused();

  return {isFocused ? <Text>Inner component</Text> : null};
}

Note:

当屏幕进入和离开焦点时,使用此钩子组件可能会导致不必要的组件重新渲染。 ... 因此,我们建议仅在需要触发重新渲染时才使用此挂钩。

更多信息可以在文档中找到当焦点屏幕改变时调用函数 https://reactnavigation.org/docs/function-after-focusing-screen/


除此之外,堆栈导航器还带有一个名为detachInactiveScreens默认情况下启用。文档链接 https://reactnavigation.org/docs/stack-navigator/#detachinactivescreens

detachInactiveScreens https://reactnavigation.org/docs/stack-navigator/#detachinactivescreens

布尔值用于指示是否应将非活动屏幕与视图层次结构分离以节省内存。请务必致电enableScreens from react-native-screens使其发挥作用。默认为true.

(有关启用 React Native Screens 的说明可以在https://reactnavigation.org/docs/react-native-screens/#setup-when-you-are-using-expo https://reactnavigation.org/docs/react-native-screens/#setup-when-you-are-using-expo)

在堆栈导航器的内部options对象,还有一个detachPreviousScreen自定义某些屏幕的行为的 prop。通常也会启用此选项。

detachPreviousScreen https://reactnavigation.org/docs/stack-navigator/#detachpreviousscreen

布尔值用于指示是否从视图层次结构中分离上一个屏幕以节省内存。将其设置为false如果您需要通过活动屏幕看到上一个屏幕。仅适用于detachInactiveScreens未设置为 false。默认为false对于最后一个屏幕,当mode='modal', 否则true.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 StackNavigator 中卸载模糊的屏幕? 的相关文章

  • 将复活的 v1 数学转换为 v3

    我想使用 Reanimated v3 来使用Shared Element Transition功能 但升级后出现很多错误 例如 const animatedTranslateX multiply cond greaterThan x thr
  • React Native FlatList 具有不同列数的替代行

    i want to have a FlatList which renders a single item on odd rows and 2 items on even rows 是否可以实现这种布局 抱歉 我还没有代码 FlatList
  • 如何在应用程序关闭时在 Android 通知中显示操作按钮?

    我有一个安卓应用程序 对于通知 我们必须显示一些操作按钮 当应用程序打开时 我们可以自由地构建通知并显示操作按钮 但是当应用程序关闭时 通知会在 Android 的通知托盘中收到 应用程序开发人员无法控制构建用户界面和操作按钮 我们现在如何
  • AsyncStorage 未解析或拒绝

    我正在尝试从异步存储中获取项目 componentDidMount console log componentDidMount AsyncStorage getItem STORAGE KEY then storage gt console
  • React:搜索过滤器无法正常工作

    我通过 API 从服务器获取记录 API 是在 Loopback 中构建的 实际上 我在每个页面上显示 5 条记录 目前工作正常 我可以导航next or prev通过分页按钮 每页显示 5 条记录 问题是 当用户在搜索框中键入内容时 记录
  • 从本机代码访问 AsyncStorage

    我需要使用 JS 代码中的 AsyncStorage 将数据保存在本地存储中 我想知道是否有一种方法可以从本机代码 Objective C 或 Java 访问 AsyncStorage 存储的数据 Thanks 如果你导入RCTAsyncL
  • react-native-firebase 无法处理通知 click_action 导航到通知屏幕

    我正在使用这个react native firebase和react navigation进行导航 我可以成功地从服务器或控制台推送通知 无论它是在前台还是后台 但我发誓文档不太清楚如何打开通知并导航到通知它所属的屏幕 这些是我的 onMe
  • 从父组件触发子组件内部的函数

    如何从父组件触发子组件内部的函数 以与抽屉导航相同的风格进行操作 他们这样做 this props navigation toggleDrawer 来自父母 我怎样才能做同样的事情 如果我正确理解你的问题 我认为你有点混淆了 您显示的示例是
  • React Native 输入组件仅接受数值

    在React Native项目中 我有一个来自Native Base的输入组件 我希望这个组件只接受数值0 9并给这个字段默认值 我寻找了关于这个问题的其他问题 我不知道也许那些答案是针对 textInput 组件的 或者不知何故建议对我不
  • 有没有办法限制 React-Native 中 TextInput 的长度?

    我一直在尝试使我的程序不允许您在 TextInput 组件中输入超过一定数量的字符 类似于 maxLength 对于输入的工作方式 我还没有找到任何类似的 textInput 的 maxLength 有没有一种简单的方法来设置 组件的最大字
  • React Native Tab 视图的高度始终等于最高选项卡的高度

    介绍 我有一个 FlatList 它在页脚中呈现一个选项卡视图 此选项卡视图允许用户在一个 FlatList 或另一个 FlatList 之间切换 所以 最后这些是同级 FlatList Problem 第一个 FlatList A 的高度
  • React-Native 中的导航抽屉

    我是反应原生的新手 不介意我问一个基本问题 我想知道 实现抽屉式导航的分步过程是什么 推荐链接这个链接 https github com react native community react native side menu usage
  • 我在 Facebook 上的“access_token”是“不正确的值”

    我正在使用 django rest auth 它是 Django all auth 的 API 扩展 我正在构建一个可以使用 Facebook 令牌注册 登录的移动应用程序 网址 http localhost 8000 rest auth
  • 访问其他类的 this.state 值 [React Native]

    我只是想问如何从其他类访问 this state sampleString 这是我的代码 class MainClass extends Component constructor props super props this state
  • Expo eas-cli iOS 构建失败

    我已经使用 React Native 创建了一个应用程序 并尝试通过 Expo 的 eas cli 创建一个 iOS 应用程序商店 跑步时eas build platform ios the Fastlane build failed wi
  • 无法在scrollView中滚动

    我有一个屏幕 我可以在输入字段中输入内容并获得相应的搜索结果 该列表在 ScrollView 中呈现 但当键盘打开时 在 Android 中 它仍然不允许我滚动 我怎样才能解决这个问题 return lt gt addressesFound
  • 未定义不是一个函数(React.findNodehandle)

    我将 ReactNative 从 0 2 1 升级到 0 26 3 然后在 Android 和 iOS 上运行该项目 它在 iOS 中运行良好 但在 Android 中 它会抛出错误 未定义不是函数 React defalut2 findN
  • 没有为此应用程序定义有效的密钥库

    我想将 google 地图 api 添加到我的反应本机项目中 我遵循文档 但是当我运行 expo fetch android hashes 时给我这些错误 没有为此应用程序定义有效的密钥库 keytool 错误 java lang Exce
  • 如何在 React Native 中使用 Platform.OS 来处理元素?

    我想在 IOS 上只使用 KeyboardAwareScrollView 而不使用任何功能 并给出下面的 android 代码 我知道我需要使用 Platform OS ios 但我不明白如何实现它 请帮我 render return
  • React Native 0.61 中引入的快速刷新不起作用

    也发表在https github com facebook react native issues 27583 https github com facebook react native issues 27583 更新 一天过去了 我再次

随机推荐