【问题标题】:React Native: React Navigation StackNavigator not working. Getting error: "undefined is not an object (evaluating 'this.props.navigation.navigate')"React Native:React Navigation StackNavigator 不工作。出现错误:“未定义不是对象(评估'this.props.navigation.navigate')”
【发布时间】:2017-05-17 15:34:10
【问题描述】:

我正在尝试使用 React Navigation 和 StackNavigator 在我的应用中导航。

我有一个带有onPress={() => navigate('DetailsScreen') 的按钮,我希望它可以将我带到DetailsScreen,但我收到以下错误:

E ReactNativeJS: undefined is not an object (evalating 'this.props.navigation.navigate')

我需要添加什么才能使其正常工作?

在这里查看我的代码: https://gist.github.com/chapeljuice/bef4b0a4dedef2994c81f3634b81aa43

【问题讨论】:

    标签: javascript reactjs react-native undefined react-navigation


    【解决方案1】:

    您的组件不支持导航(它不是屏幕)。因此,这里有 2 个常见的解决方案:

    使用父级

    从你的父组件(如果它是一个屏幕)传递导航道具。

    <Card navigation={navigation} />
    

    这是最简单的解决方案。

    使用高阶组件withNavigation

    如果父组件不支持导航或者传递 props 过于复杂,您可以使用 HOC withNavigation

    export default withNavigation(connect(mapStateToProps)(Card))
    

    然后您将拥有可用的 navigation 属性。

    【讨论】:

    • 非常感谢! Card 的父级不是屏幕,所以我选择了 HOC withNavigation 选项。不过我确实有一个问题 - 因为 Card 的父级不是屏幕......有没有办法让导航道具向下传递多个子级?我只是继续对每个父母/孩子使用您的第一种方法吗?再次感谢您的帮助!
    • @chapeljuice 这就是 React 的工作原理。您必须在每个级别传递道具。您没有任何其他解决方案,这就是他们创建 HOC 的原因,专门针对这个用例:非常嵌套的孩子。
    猜你喜欢
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2020-04-02
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多