【问题标题】:Property 'params' does not exist on type 'StackProps<"Detail">''StackProps<"Detail">' 类型上不存在属性 'params'
【发布时间】:2020-10-10 13:05:59
【问题描述】:

我在尝试从 route.params 检索数据时遇到错误,这样说会出错。 route 的类型应该是什么。

类型'StackProps'上不存在属性'params'

虽然我已经为route 定义了类型,但它仍然给我错误。这是我的代码

RouteParamList.tsx

import { StackNavigationProp } from "@react-navigation/stack";
import { RouteProp } from "@react-navigation/native";
export type RouteParamList = {
  Home: undefined;
  Detail: { productId: number };
};
export type StackProps<T extends keyof RouteParamList> = {
  navigation: StackNavigationProp<RouteParamList, T>;
  route: RouteProp<RouteParamList, T>;
};

DetailScreen.tsx

interface DetailScreenProps {
  route: StackProps<"Detail">;
  
}
export function DetailScreen({ route }: DetailScreenProps) {
  
  const { productId }: { productId: number } = route.params; <-- I am getting error here
  const dataDisplay = data.find((el, index) => {
    if (el.id !== productId) {
      return undefined;
    } else {
      return el.id === productId;
    }
  });

【问题讨论】:

    标签: reactjs typescript react-navigation react-typescript


    【解决方案1】:

    我认为目前设置接口的方式,您需要访问route.route.params。请注意,DetailScreenProps.route 的类型为 StackProps&lt;"Detail"&gt;,它也有一个属性 route

    除了使用route.route.params,您还可以考虑像这样更改界面:

    interface DetailScreenProps extends StackProps<"Detail"> { }
    

    【讨论】:

      猜你喜欢
      • 2018-08-17
      • 2021-01-09
      • 2021-07-10
      • 1970-01-01
      • 2017-07-22
      • 2023-03-26
      • 2023-04-02
      • 2019-12-20
      相关资源
      最近更新 更多