Свойство 'params' не существует для типа 'StackProps <"Detail">' - PullRequest
1 голос
/ 20 июня 2020

Я получаю сообщение об ошибке при попытке получить данные из route.params При этом появляется ошибка. Каким должен быть тип route.

Свойство 'params' не существует для типа 'StackProps <"Detail">'

Хотя я определил тип для 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;
    }
  });

1 Ответ

0 голосов
/ 20 июня 2020

Я думаю, что в настоящий момент интерфейсы настроены, вам нужен доступ к route.route.params. обратите внимание, что DetailScreenProps.route имеет тип StackProps<"Detail">, который также имеет свойство route.

вместо использования route.route.params вы также можете подумать об изменении интерфейса следующим образом:

interface DetailScreenProps extends StackProps<"Detail"> { }
...