【问题标题】:React native navigation.state.params always undefined反应本机 navigation.state.params 总是未定义
【发布时间】:2019-05-17 01:48:39
【问题描述】:

我是 React native 的新手,我购买了一个名为草图元素的模板来帮助我开始使用 Flow 进行类型检查。

https://react-native.shop/elements

我想在导航时传递一个参数,但是该参数始终未定义。

这是我在第一个组件中的代码 - 我想导航到通过关卡对象传递的 navigateTo 组件(在本例中为照片)

navigate(navigateTo: string, level: object) {
    const { navigation } = this.props;
    navigation.navigate(navigateTo, { level });
}

我的其他组件如下所示,控制台日志总是返回未定义。查看其他示例,这看起来与之前实现的相同,但我显然遗漏了一些东西。

type PhotosProps = NavigationProps<> & {
    level: object
};

export default class Photos extends React.Component<NavigationProps<PhotosProps>> {
    render(): React.Node {
        const { navigation } = this.props;
        console.log( navigation.state.params);
        return null;
    }
}

非常感谢任何帮助。

【问题讨论】:

    标签: reactjs react-native react-navigation flowtype


    【解决方案1】:

    您可以使用const level = navigation.getParam('level') 访问传递到react-navigation 库的参数。传参文档:https://reactnavigation.org/docs/en/params.html

    【讨论】:

    • 感谢您的评论,这也会返回 undefined 吗?
    • 您可以在执行navigation.navigate(navigateTo, { level }); 之前尝试记录level 变量以确保它没有未定义吗?
    • 当然,它给出了 - Object { "color": "#83de64", "friendlyName": "Level 1", "level": 6, "name": "1", "theme" : "1 级", }
    • 这很奇怪。您可以在照片渲染方法中记录整个导航状态(navigation.state 没有参数)吗?也可以尝试将其记录在它的 componentDidMount 中。
    • 还有你使用的是哪个版本的react-navigation 包?
    【解决方案2】:

    如果使用 react-navigation v5,那么

    route.params?.someParam ?? 'defaultValue';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-20
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 2022-08-20
      • 2018-10-30
      • 2017-09-28
      • 2017-08-21
      相关资源
      最近更新 更多