react navigation: hur man skickar redux-propps med NavigationStackScreenComponent-typ i typescript


Jag började använda TypeScript i mitt React Native-projekt (TypeScript-nybörjare) och stötte på ett problem med navigationOptions i en funktionell komponent med TypeScript, jag löste det tack vare detta inlägg här, men när jag försöker skicka Redux-props säger det till mig

Property 'authType' does not exist on type 'PropsWithChildren<NavigationStackScreenProps<Params, Props>>

det här är min kod

interface Props {
 authType: string;
}

interface Params {
 routeName: string;
}

const Customer: NavigationStackScreenComponent<Params, Props> = ({
 navigation,
 authType,
 }) => {
 .... Component
 }

 Customer.navigationOptions = ({ navigation }) => ({
   title: navigation.getParam('routeName'),
 });

Jag tror att detta betyder att den prop jag skickar inte läses även om jag skickar den.

Jag använde NavigationStackScreenComponent för att kunna använda

Customer.navigationOptions etc

annars kommer det att säga mig

ts] Property 'navigationOptions' does not exist

Jag börjar verkligen älska TypeScript. Har du någon idé om hur man använder authType Props utan att det skriker åt mig?

Svar #1

Du behöver göra något som

interface Props {
 authType: string;
}

type CustomerType = React.ComponentType<Props & NavigationStackScreenProps> & { navigationOptions: NavigationStackOptions | ((props: NavigationStackScreenProps) => NavigationStackOptions) }

const Customer: CustomerType = ({
 navigation,
 authType,
}) => {
 .... Component
}

Svar #2

Jag slutade med att göra detta

type Params = {
  routeName: string;
};

type Props = {
  authType?: string;
  navigation: NavigationStackProp;
};

const Customer: NavigationStackScreenComponent<Params> = ({
  authType,
  navigation,
}: Props) => {

Jag gjorde precis de passerande egenskaperna valfria.