Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 使用react导航将Javascript对象传递到另一个屏幕_React Native - Fatal编程技术网

React native 使用react导航将Javascript对象传递到另一个屏幕

React native 使用react导航将Javascript对象传递到另一个屏幕,react-native,React Native,我有一个react原生应用程序(4个屏幕),它使用Azure函数获取数据(返回json对象数组)。第一个屏幕根据遥测数据(即温度和湿度、警报数量等)呈现数据中心的整体状态。第二个屏幕只是所有数据中心的列表,您可以在其中深入查看该位置的温度和湿度。这就是我的问题所在。我用获取的数据设置react本机应用程序的状态,并在第一个屏幕上正确解析所有内容。在我的windows机器上的expo中,所有屏幕都工作(包括一个警报屏幕,我在其中创建另一个javascript对象,它是我最初拉入的数据的子集)。我需

我有一个react原生应用程序(4个屏幕),它使用Azure函数获取数据(返回json对象数组)。第一个屏幕根据遥测数据(即温度和湿度、警报数量等)呈现数据中心的整体状态。第二个屏幕只是所有数据中心的列表,您可以在其中深入查看该位置的温度和湿度。这就是我的问题所在。我用获取的数据设置react本机应用程序的状态,并在第一个屏幕上正确解析所有内容。在我的windows机器上的expo中,所有屏幕都工作(包括一个警报屏幕,我在其中创建另一个javascript对象,它是我最初拉入的数据的子集)。我需要为IOS编译代码,这样我就可以转移到MAC上,初始化一个新项目,让第一个屏幕工作,但随后的屏幕不工作。我得到了一个不变的冲突,因为我传递的参数是一个javascript对象,需要字符串。我认为问题出在react导航版本上,它在我的windows机器上是2.18.3,在MAC电脑上是3.0。我是否可以修改MAC上的package.json以使用相同的版本,然后将react navigation文件夹从我的windows计算机复制到MAC上,以使其按我需要的方式工作

我还没有尝试在package.json中手动设置react navigation版本,并将react navigation的模块文件夹从我的pc移动到mac,但我会尝试这样做。如果这不起作用,任何关于我能做什么的反馈都将非常感谢,我的意思是非常感谢

这是我在MAC和pc上用于屏幕的代码

我从提取数据的主组件传递数据:

<View>
    <Button
        backgroundColor = 'grey'
        title = 'View Complete Data Center List'
        onPress={() => {
        this.props.navigation.navigate('Datacenters', { DCdata: this.state.data});
        }}
    />  
</View>

{
navigate('Datacenters',{DCdata:this.state.data});
}}
/>  
我在下一个屏幕中捕获数据,并使用.map函数将其映射出来(这在我的windows计算机上有效。使用模拟器时,相同的代码在MAC上不起作用):

const{navigation}=this.props;
const datacenterdata=navigation.getParam('DCdata');
返回(
{
datacenterdata.map((项目,i)=>(
{
this.props.navigation.navigate('Details',{
温度:item.temp,潮湿:item.湿润,直流:item.Datacenter,
});
}}
/>
))
}

我需要我的第二个屏幕能够访问我正在传递的javascript对象,并将项目呈现为列表(即仅dc位置)。但是,我得到了一个不变的冲突,因为我用来传递数据的方法需要一个字符串。

您需要更改您的检索类型,而不是您的检索类型

请在下面的行中尝试从导航中获取值

this.props.navigation.state.params.DCdata
在使用
react导航时,我从导航中获取价值


谢谢

我正准备尝试此操作。我会让您知道此操作是否有效。您使用的是什么版本的react navigation?在我的第二个屏幕中使用上述行时仍会出现相同的错误(不变冲突:元素类型无效:应为字符串)。它说在我的第二个屏幕中检查这个问题。但是,我认为这是第一个屏幕的问题,我传递的元素类型不是字符串。我通过将第二个屏幕更改为仅显示文本并从第一个屏幕发送字符串来测试它。我认为这是一个react导航版本问题我正在使用
导航版本的“^3.5.1”
this.props.navigation.state.params.DCdata