我在react-native 项目(expo)中使用typescript.

该项目使用react-navigation ,因此在我的屏幕上,我可以设置navigationOptions,并且可以使用props navigation.

现在,我正在try 强类型输入这些属性,以便获得可设置哪些属性的提示.

interface NavStateParams {
    someValue: string
}

interface Props extends NavigationScreenProps<NavStateParams> {
   color: string
}

class Screen extends React.Component<Props, any> {
    // This works fine
    static navigationOptions: NavigationStackScreenOptions = {
        title: 'ScreenTitle'
    }
    // Does not work
    static navigationOptions: NavigationStackScreenOptions = ({navigation, screenProps }) => ({
        title: navigation.state.params.someValue
    })
}

将react-navigation 作为组件props 的最佳方式是什么.

推荐答案

只需将NavigationType添加到props 中,如下所示:

    import { StackNavigator, NavigationScreenProp } from 'react-navigation';

    export interface HomeScreenProps {
      navigation: NavigationScreenProp<any,any>
    };

    export class HomeScreen extends React.Component<HomeScreenProps, object> {

      render() {
        return (
          <View style={styles.container}>       
            <Button
              title="Go to Details"
              onPress={() => this.props.navigation.navigate('Details')}
            />
          </View>
        );
      }
    }

Typescript相关问答推荐

使用类和子类以及迭代类属约束对类属递数据 struct 建模

如何根据参数的值缩小函数内的签名范围?

当使用`type B = A`时,B的类型显示为A.为什么当`type B = A时显示为`any `|用A代替?

SortKey类型不起作用,尽管它使用的单个类型工作正常<>'

将值添加到具有不同类型的对象的元素

打印脚本丢失函数的泛型上下文

与字符串文字模板的结果类型匹配的打字脚本

如何在Angular 12中创建DisplayBlock组件?

如何判断对象是否有重叠的叶子并产生有用的错误消息

TypeScrip:强制使用动态密钥

Typescript -返回接口中函数的类型

TypeScrip-根据一个参数值验证另一个参数值

抽象类对派生类强制不同的构造函数签名

如何在Nextjs路由处理程序中指定响应正文的类型

TypeScrip:使用Cypress测试包含插槽的Vue3组件

如何在Type脚本中创建一个只接受两个对象之间具有相同值类型的键的接口?

如何知道使用TypeScript时是否在临时工作流内运行

Typescript泛型-键入对象时保持推理

Typescript 是否可以区分泛型参数 void?

如何将 MUI 主题对象的自定义属性与情感样式组件中的自定义props 一起使用?