Как реагировать на навигацию: как передать редукционный реквизит с помощью типа NavigationStackScreenComponent в машинописи - PullRequest
0 голосов
/ 28 января 2020

Я начал использовать машинописный текст в своем собственном проекте реакции (машинописный текст newb ie) и столкнулся с проблемой с навигацией в функциональном компоненте с машинописным шрифтом. Я решил эту проблему благодаря этому сообщению здесь , однако, когда я пытаюсь pass redux опровергает его сообщение мне

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

это мой код

interface Props {
 authType: string;
}

interface Params {
 routeName: string;
}

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

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

Я думаю, это означает, что пропускаемая мною не читается, хотя я передаю ее.

Я использовал NavigationStackScreenComponent, чтобы иметь возможность использовать

Customer.navigationOptions etc

, иначе он скажет мне

ts] Property 'navigationOptions' does not exist

Я действительно начинаю любить машинопись, Любую идею, как использовать authType Реквизит, не крича на меня?

Ответы [ 2 ]

0 голосов
/ 29 января 2020

Я закончил тем, что сделал

type Params = {
  routeName: string;
};

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

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

Я просто сделал проходные опоры необязательными.

0 голосов
/ 28 января 2020

Вам нужно сделать что-то вроде

interface Props {
 authType: string;
}

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

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