react-native - 如何使用 createStackNavigator 防止在 React Navigation 版本 5.x 中重新渲染我的组件?
问题描述
在我的 React Native 应用程序中,我使用 StackNavigator,或多或少如下:
// React navigation
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
// Create stack navigator
const Stack = createStackNavigator();
export default function App() {
return (
<NavigationContainer>
<Stack.Navigator detachInactiveScreens={false} screenOptions={{ header: () => null }}>
<Stack.Screen name="master" component={MasterView} />
<Stack.Screen name="detail" component={DetailView} />
</Stack.Navigator>
</NavigationContainer>
)
}
当用户使用应用程序时,他/她在 MasterView 和 DetailView 之间来回切换。每当用户导航到 DetailView 时,它都会重新实例化。但是,我需要防止在导航时重新实例化 DetailView。我希望使用属性 detachInactiveScreens 来完成这里描述的这种行为: https ://reactnavigation.org/docs/stack-navigator/#detachinactivescreens
我还在 App.tsx 中包含了 enableScreens 的调用,如下所示
// Import react-native-screens
import { enableScreens } from 'react-native-screens';
enableScreens();
但是,只要用户导航到它,我仍然会看到我的 DetailView 被重新实例化。我是否遵循错误的方法?有没有另一种方法来完成这种行为?
提前致谢
解决方案
推荐阅读
- ios - 更新 iOS14 后 Flex 网络记录器无法正常工作
- r - 使用 dorng 包的可重复随机数
- node.js - 在默认日期和时间中存储错误的时区
- bash - 为什么我需要一个带有 pg_dump 的临时文件?
- c - 为什么周期性中断会有时间差异?
- ios - 如何使用 ObservedObject 作为 Picker 中的选择以及 SwiftUI 中的默认选择
- javascript - 联系表格提交电子邮件不发送
- javascript - 如何在 Node.js 上将函数从一个文件导出到另一个文件?
- javascript - 如何在提交 RobinHerbots / Inputmask 时取消屏蔽
- node.js - 尝试实现 NodeJS Gmail API 示例