navigation.navigate 不是函数

navigation.navigate is not a function

我正在使用导航来导航我的 React 本机应用程序,但我无法通过 Paypass 这个问题。我按照文档做了,但对我没有用。

问题是我正在尝试使用导航选项添加 header 和右键将我导航到另一个屏幕,但它一直给我这个错误:“navigation.navigate is不是函数。(在 navigation.navigate 中未定义)

这是我的代码:

    static navigationOptions = (navigation) => {
        return {
            title: 'Review Jobs',
            headerRight: (<Title onPress={()=>{navigation.navigate('settings')}}>Settings</Title>)
        };
    };

谢谢

这是 React 的一个常见问题,特别是当您不了解最新的 JS 标准(例如 React 使用的 ES6)时。

所以,你的问题是概念性的。 React 组件收到一个名为 props 的 object,其中包含所有 props。通常,您使用解构形式直接获取道具的某些属性。在这种情况下,您想要 props.navigation.

您可以解构箭头函数参数中的道具 object,这就是文档所说的,使用 ({navigation}) => ... 而不是 (navigation) => ...

这与使用 (props) => ... 相同,之后使用 props.navigation

您还需要更改您的 onPress 函数。在箭头函数中使用 {...} 块不会 return 任何东西,除非你指定 return。如果你没有用 {...} 环绕你的 body 函数,那么它与写 { return ...} 是一样的。所以,如果要returnnavigation.navigate('settings'),就得把周围的{...}删掉,或者在里面写return

    static navigationOptions = ({navigation}) => {
        return {
            title: 'Review Jobs',
            headerRight: (<Title onPress={()=> navigation.navigate('settings')}>Settings</Title>)
        };
    };

此外,您可以对导航选项功能执行相同的操作:

    static navigationOptions = ({navigation}) => ({
        title: 'Review Jobs',
        headerRight: (<Title onPress={() => navigation.navigate('settings')}> Settings </Title>),
    });

在接收参数时使用对象解构:

static navigationOptions = ({navigation}) => { // use {} to object destructuring
        return {
            title: 'Review Jobs',
            headerRight: (<Title onPress={()=>{navigation.navigate('settings')}}>Settings</Title>)
        };
    };

您缺少 {} 导航

static navigationOptions = ( {navigation} ) => {
  return {
    title: 'Review Jobs',
    headerRight: (<Title onPress={() => { navigation.navigate('settings') }}>Settings</Title>)
  };
};