react-navigation - 使用 React Navigation 了解 Stack Navigator 之外的组件中的当前路由是什么?
问题描述
我有一个组件在NavigationContainer
组件内但在Stack Navigator
. 我可以知道组件内的当前路由是什么吗?我不能使用useRoute
钩子,因为它错误:
找不到路由对象。您的组件是否在导航器的屏幕内?
解决方案
您需要遵循react-navigation
文档中的本指南。它解释了如何访问 a NavigationContainer
ref
,然后您可以使用它来访问应用程序的当前导航状态,即使在组件之外也是如此。
这是一个简短的演示,以防将来此链接中断。
// App.js
import { NavigationContainer } from '@react-navigation/native';
import { navigationRef } from './Navigation';
export default function App() {
return (
<NavigationContainer ref={navigationRef}>{/* ... */}</NavigationContainer>
);
}
// Navigation.js
import React from 'react';
export const navigationRef = React.createRef();
// You can export navigation functions to use throughout your app, without accessing the `navigation` prop.
export function navigate(name, params) {
navigationRef.current?.navigate(name, params);
}
// This is the function you want, it will return the complete navigation state
export function getRootState() {
return navigationRef.current?.getRootState();
}
推荐阅读
- c# - 可序列化属性挂起 VS
- python - 从 python 脚本连接到 debian 服务器的 MySQL 数据库
- java - 无法从 Google Classroom API 检索学生详细信息
- python - 仅从使用 BS4 和 Python 的网站上的 dd 标记中获取名称,而不是整个 dd 类
- android - Obufscation,在 Android 中使用 build.gradle 缩小
- ios - 定位 UIButton 的内部图像
- python - 创建包含其他列的列
- python - 使用 Python 解码来自传感器的有效载荷
- vb.net - 如何将字符串转换为另一种方式并检测换行符并写入 vb .net 中的文本文件
- javascript - 无法在javascript的类方法中访问类实例变量