从其他组件访问数据-React Native

问题描述 投票:2回答:4

我必须从前一个组件访问对象以显示在当前组件中。我正在尝试发送状态参数作为导航方法的第二个参数。

this.props.navigation.navigate('detail', { objPass: this.state.stObjPass });

尝试访问显示为“Undefined”的当前组件的值

   async componentWillMount() {
   console.log(this.props.state.params.objPass);
   console.log(this.props.objPass);
   console.log(this.props.state.objPass);
    }

所有这些都返回空或未定义。

请让我知道如何分享对象。

reactjs react-native ecmascript-6
4个回答
3
投票

这是this.props.navigation.state.params.objPass,所以你只是有一个不正确的参考。


2
投票

我认为问题出在本声明中。

this.props.navigation.navigate('detail', { objPass: this.state.stObjPass });

请检查this.state.stObjPass是否正确,还要检查控制台中的键值对。

console.log(this.props.navigation.state.params);

1
投票

当您使用导航传递参数时,您需要从导航中获取这些参数:

this.props.navigation.state.params.objPass

Read more from here


1
投票

通常我们这样做:

onClickMore = (user) => {
    this.props.navigation.navigate('Details', { ...user });
};

然后在我们需要它的组件中,我们从navigation加载,如:

const { picture, name, email, phone, login, dob, location } = this.props.navigation.state.params;

注意:请参阅我使用了扩展运算符...(es6语法)来传递对象,还可以看到我如何使用this.props.navigation.state.params导入/读取目标组件然后对其进行解构。还有其他方法可以编写相同的语法。

this.props.navigation可在React Navigation直接呈现的任何组件内部使用(请参阅documentation here

现在,navigation正在像桥一样传递数据并以某种方式获取数据,同时进行屏幕转换。 (见documentation here

有关更多信息,请参阅这篇文章(这可能会有所帮助):https://hackernoon.com/getting-started-with-react-navigation-the-navigation-solution-for-react-native-ea3f4bd786a4

几个检查点:

  • 在将函数传递给navigation之前,请检查函数中是否有有效对象。
  • 在为其他组件/屏幕传递数据之前,您有this.props.navigation的有效引用。
  • 在目标组件/屏幕中,检查您是否有对this.props.navigation.state的有效引用。

您可以使用console.log()函数调试所有这些。

此外,如果您在执行上述调试后在Git上传代码将更有帮助,因此您可以得到适当的响应。可能是其他地方的问题。

© www.soinside.com 2019 - 2024. All rights reserved.