javascript - 如何在根反应导航器之外获取反应导航器状态?
问题描述
事情就是这样:
我在移动设备上有一个 react-native 应用程序,当用户离开我的应用程序并返回时,我正在尝试执行一些权限检查操作。我想避免在登录屏幕上进行权限检查并考虑到现有的应用程序组件树,我想获取当前路由供我使用。现在,我使用的是5.x版本的 react-navigation。
const App = () => {
useEffect(() => {
const handleAppStateChange = (): void => {
// Authority check action
};
AppState.addEventListener('change', handleAppStateChange);
}, []);
return (
<Provider store={store}>
<SafeAreaProvider>
<SafeAreaView>
<RootNavigator />
<OverlayActivityIndicator />
<ActionSheet />
</SafeAreaView>
</SafeAreaProvider>
</Provider>
);
}
现在我遇到了问题:
我不知道如何在根导航器之外获取当前路线。
我最后的选择是将当前路由集成到 redux 存储中,这将使我的应用程序更加复杂。
还有其他想法吗?
解决方案
import { NavigationContainer } from '@react-navigation/native';
import { navigationRef } from './RootNavigation';
export default function App() {
return (
<NavigationContainer ref={navigationRef}>{/* ... */}</NavigationContainer>
);
}
//whereas
import * as React from 'react';
export const navigationRef = React.createRef();
export function navigate(name, params) {
navigationRef.current?.navigate(name, params);
}
推荐阅读
- ruby-on-rails - 通过关联使用 has_many 保存时检测到 Rails 急切加载
- android - Android 应用程序停止错误:膨胀类 android.widget.ListView
- c - 我应该使用 emcc 编译 .so 文件以使用 dlopen() 打开它吗?
- python - 从 Azure Blob 存储打开文件并将它们附加到新文件中
- kotlin - 是否可以引用一个字节?
- visual-c++ - MFC 中的对话框句柄
- excel - 仅将几列从 Excel 转换为 PDF
- python - 如何解决这个 Python KeyError?
- node.js - Mongoose:updateMany() 没有按预期工作
- java - Spring全套初始化方法及其标准顺序。@PostConstruct