【问题标题】:Using typescript with useRoute on react navigation v5在反应导航 v5 上使用带有 useRoute 的打字稿
【发布时间】:2020-07-28 08:18:16
【问题描述】:

我正在尝试使用useRoute 提取参数,如下所示。

  const route = useRoute();
  const { params } = route;
  const {
   id, name,
  } = params;

一切正常,但 linter 突出显示 idname 并出现以下错误。

类型“object |”上不存在属性“id”未定义

我该如何解决这个问题。

【问题讨论】:

    标签: reactjs typescript react-native react-navigation react-navigation-v5


    【解决方案1】:

    react-navigation 导出了几个实用程序类型,以使您在使用钩子和为自己的组件定义道具时更轻松。它们取决于您首先为导航器定义类型。


    假设您有一个包含两个屏幕 A 和 B 的堆栈。首先定义每个屏幕的参数:

    type StackParamsList = {
      A: undefined;
      B: {
        id: string;
        name: string;
      };
    }
    

    用于在屏幕 B 中输入 useRoute

    import { RouteProp } from '@react-navigation/native';
    
    const route = useRoute<RouteProp<StackParamsList, 'B'>>();
    
    route.params.id // OK
    route.params.foo // error
    

    查看 react-navigation 文档中的 Type checking with Typescript 文章,了解更多详细信息以及键入导航堆栈其他元素的示例。

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 2020-11-20
      • 2020-11-11
      • 2022-08-24
      • 2019-04-19
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      相关资源
      最近更新 更多