在react导航中识别导航类型



我正试图为这个函数的TS版本添加类型,并且遇到了一点麻烦。

来自React导航文档:

// RootNavigation.js
import { createNavigationContainerRef } from '@react-navigation/native';
export const navigationRef = createNavigationContainerRef<RootStackParamList>()
export function navigate(name, params) {
if (navigationRef.isReady()) {
navigationRef.navigate(name, params);
}
}
// add other navigation functions that you need and export them

我正在使用Typescript,并希望添加类型的参数navigate(name, params),但我不能完全弄清楚他们应该是什么。任何想法吗?

我已经有了这样的容器类型:

export const navigationRef = createNavigationContainerRef<RootStackParamList>()

我像这样使用navigate

// RootNavigation.js
import {createNavigationContainerRef} from '@react-navigation/native';
import {RootStackParamList} from './RootStackParamList';
export const navigationRef = createNavigationContainerRef<RootStackParamList>();
export function navigate<RouteName extends keyof RootStackParamList>(
...args: RouteName extends unknown
? undefined extends RootStackParamList[RouteName]
?
| [screen: RouteName]
| [screen: RouteName, params: RootStackParamList[RouteName]]
: [screen: RouteName, params: RootStackParamList[RouteName]]
: never
) {
if (navigationRef.isReady()) {
navigationRef.navigate(...args);
}
}

最新更新