反应本机打字稿“字符串”不可分配给“从不”类型的参数。使用中导航

2024-04-19

[我不断收到错误消息,提示“字符串”不能分配给反应本机打字稿中“从不”类型的参数,我不知道为什么。有人可以帮我修复这个错误吗?

先感谢您。

代码片段:

const loadReport = (id: string) => {
    setPostId(id);
    navigation.navigate('Report', {postId: id});
}

我在“报告”下看到一条下划线。


这是一个奇怪的问题,发生在 RN > 0.65 中。 我的解决方案:

1.- 进口:

{/* Depends of your Package (Stack or NativeStack...) */}
import { StackNavigationProp } from '@react-navigation/stack';
import { useNavigation } from '@react-navigation/core';

2.- 定义类型

export type RootStackParamList = {
  YourScreen: { id: number } | undefined;
};

3.- 分配类型为 StackNavigationProp 的 useNavigation 挂钩。

const navigation = useNavigation<StackNavigationProp<RootStackParamList>>();

4.- 使用它! (眼睛:使用此类型您可以访问导航对象)

<TouchableOpacity
   // Use this when you pass a parameter (is optional)
   onPress={() => navigation.navigate('YourScreen', {id: 5})}>
</TouchableOpacity>

5.- 请记住以下注意事项:

  • 指定 undefined 意味着该路由没有参数。未定义的联合类型 =>任意类型 |不明确的意味着参数是可选的。

  • useNavigation const 具有特殊类型,最终类型需要 3 个泛型:

  • 参数列表对象=>根栈参数列表

  • 屏幕路由名称=>路线名称

  • 导航器的 ID(可选)=>导航器ID

从...获取:https://reactnavigation.org/docs/typescript/#annotating-usenavigation https://reactnavigation.org/docs/typescript/#annotating-usenavigation

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

反应本机打字稿“字符串”不可分配给“从不”类型的参数。使用中导航 的相关文章

随机推荐