如何在 React Native 中将一个组件的状态传递给另一个组件?

2023-12-07

我正在研究 React Native,我首先运行有两个文件geolocation函数获取坐标并将其分配给状态。现在我想在我的第二个文件中访问这个状态。我尝试使用props但当我控制台日志时它显示未定义。请帮助我是新手。

export default class MapScreen extends React.Component {

constructor(props) {
super(props);
this.state = {
  mapInitialRegion: {
    latitude: 10,
    longitude: 7,
    latitudeDelta: LATITUDE_DELTA,
    longitudeDelta: LONGITUDE_DELTA
  },
  markers: []
};

this.itemsRef = firebase.database().ref("incidents");
}
componentDidMount() {
// Get Marker Information from the server
//this._getMarkerInformation();
this.listenForItems(this.itemsRef);
// Get user's location to render the map around the user
navigator.geolocation.getCurrentPosition(
  position => {
    lat = parseFloat(position.coords.latitude);
    long = parseFloat(position.coords.longitude);
    console.log(position);
    var initalRegion = {
      latitude: lat,
      longitude: long,
      latitudeDelta: LATITUDE_DELTA,
      longitudeDelta: LONGITUDE_DELTA
    };

    this.setState({ mapInitialRegion: initalRegion });
  },

  //error => alert(error),
);

} .. ..

Hospitals.js 内部

import React, { Component } from 'react';
import {
Text,
View,
FlatList,
ActivityIndicator,
AppRegistry
} from 'react-native';

import { Components } from "expo";

import { List, ListItem } from "react-native-elements";

var _ = require('lodash');

export default class Hospitals extends React.Component {
constructor() {
super();

this.state = {
  loading: false,
  data: [],
  pageToken: '',
  refreshing: false,
  siteTitle: ''
};
}
componentDidMount() {
this.fetchData();
}

fetchData = (props) => {

var latitude = this.props.propsname;
var longitude =  this.props.propsname2;
const { pageToken } = this.state;
const urlFirst = `https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=${latitude},${longitude}&radius=500&type=hospital&key=your_api_key`
const urlNext = 
`https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=${latitude},${longitude}&radius=500&type=hospital&key=Your_api_key&pagetoken=${pageToken}`;

let url = pageToken === '' ? urlFirst : urlNext
console.log(url);
console.log(latitude);
console.log(longitude);

在你的内部设置状态后MapScreen组件,您需要确保将其作为道具传递给您的Hospital成分

所以在你的里面MapScreen您需要导入 Hospital 组件,例如(您可以相应修改链接):

import View from '../components/Hospital'

在你的里面MapScreen创建一个渲染函数并将状态作为道具传递给它(您可以相应地修改它,具体取决于您想要发送到的道具Hospital )

export default class MapScreen extends React.Component { 

    render() {
        return (<div>< Hospital view={this.state.mapInitialRegion}/></div>)
    }
}

更新 :

用于检查是否this.state is not empty or undefined你可以这样做:

export default class MapScreen extends React.Component { 

 let mapInitial;

 if(this.state.mapIntialRegion) {

   mapInitial = < Hospital view={this.state.mapInitialRegion}/>
    } else { mapInitial = <div>Loading ...</div>
     }

    render() {
        return (<div>{mapInitial}</div>)
    }
}

现在在你的Hospital您可以通过在组件中传递的对象来访问 PropsMapScreeen在这种情况下我已经通过了渲染函数view :

this.props.view.mapInitialRegion

或者您可以使用破坏,例如:

const { latitude , longitude} = this.props.view.mapInitialRegion

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 React Native 中将一个组件的状态传递给另一个组件? 的相关文章

随机推荐

  • 如何使用 distHaversine 函数?

    我试图在循环内使用 R 中的 distHavrsine 函数来计算数百行的某些纬度和经度坐标之间的距离 在我的循环中我有这样的代码 if distHaversine c file i long file i lat c file j lon
  • 如何用 C 语言制作自己的头文件?

    我尝试制作自己的头文件 但它不起作用vim says wget h 2 2 error invalid preprocessing directive ifndef WGET H wget h 3 2 error invalid prepr
  • 列出并连接到蓝牙设备

    我正在尝试让我的 Windows 平板电脑应用程序通过蓝牙与其他设备进行通信 首先我想扫描设备 然后我想连接到所选设备 我制作了一个简单的测试应用程序 空白首页并向其添加了一个按钮和一个列表框 然后我尝试了以下代码 我在其他地方找到了这样的
  • 如何删除HTTP响应头?

    我遇到一种情况 其中一个响应标头Content Disposition必须被删除 所以我想到编写一个servlet过滤器来做到这一点 但我意识到HttpServletResponse只有一个setHeader 方法 但没有方法删除它 我怎样
  • Django REST Framework 不以 PUT 形式显示值

    昨天我发了一个question并找到了解决该问题的方法 然而 该解决方案引发了另一个问题 请看一下问题 这样我就不必重复内容了 在可浏览 API 中 class name 的值不会显示在 PUT 表单中 呈现的 HTML 看起来像这样 di
  • 在oracle plsql中使用触发器填充代理键的优点

    我正在开发一个代码库 它具有以下类型的模式来生成表的代理键 create or replace TRIGGER TEST TRIG BEFORE INSERT OR UPDATE ON my table REFERENCING NEW AS
  • 更改 JavaFX 8 DatePicker 中的语言

    将 DatePicker 添加到我的应用程序时 我得到以下信息 我认为这是因为我在计算机上使用希伯来语 如何将 DatePicker 的语言更改为英语 您可以为 Java 虚拟机调用实例定义默认区域设置 Locale setDefault
  • 找到字符串中最长的单词

    目前正在尝试找出如何找到字符串中最长的单词 我的研究已经让我有所收获 我在 SO 上找到了一个代码 它显示了最长单词中的字母数量 Example function longest str var words str split var lo
  • FileUtils.mv 抛出 Invalid char \302 和 \255 异常

    当我运行下面的代码时CodeRunner或者从命令行我收到以下错误 Untitled rb 25 Invalid char 302 in expression Untitled rb 25 Invalid char 255 in expre
  • 从母版页调用部分视图时出现 ASP.NET MVC 堆栈溢出异常

    当我尝试从主控调用部分视图时 出现堆栈溢出错误 部分视图
  • Android 上的 OMA DRM v1 和 v2 支持

    Are OMA DRMAndroid 支持 v1 和 v2 吗 如果没有 有计划吗 是否有任何第三方库可以实现 OMA DRAM v1 和 v2 简短的回答是它不存在 但看起来有 3rd party 库 From 邮件列表 仅支持前向锁定
  • 片段单元测试:launchFragment 抛出 ClassCastException

    我试图在单元测试中调用 Fragment 类中的方法 但我不断收到错误java lang ClassCastException androidx fragment app testing FragmentScenario EmptyFrag
  • 我如何知道函数的参数数量?

    我们如何知道一个函数有多少个参数 例如 对于给定的函数f 我想做 if arg number f 0 f else if arg number f 1 f FALSE nargs 将检查函数内参数的数量 函数的参数数量 Edit forma
  • 使用 JNI 将 float* 转换为 jfloatArray

    我在 C 函数中获得了一个 float 我需要将其转换为 jfloatArray 以返回到我的 Java 代码 如何将 float 转换为 jfloatArray Thanks 要将 float 转换为 jfloatArray 可以使用 N
  • 如何将文件夹添加到 java 构建路径作为库,其中包含多个 jar 或条目?

    首先 我想说非常感谢 Rich seller 解决了我以编程方式更改 eclipse java 构建路径中的条目顺序的查询 我想将我的 Library 文件夹添加到 java 构建路径 其中有几个 jar 它的行为应该像类路径容器 我尝试使
  • 将 ISO 格式的日期转换为 DATETIME

    我正在使用 SQL Server Management Studio 编写 SQL 查询 并且有一些 ISO 日期格式的 NVARCHAR 类型值 例如 20130302T164800 我需要将它们转换为 DATETIME 我尝试过Conv
  • 分解除括号之外的字符串?

    我正在尝试通过垂直条来爆炸一根弦 这是最简单的部分 但是 我不希望分割影响括号内的子字符串 这意味着我需要一个字符串 例如 Hello sir maam Hi there 爆炸成 Array 0 gt Hello sir maam 1 gt
  • 计算字符串中的数学表达式

    stringExp 2 4 intVal int stringExp Expected value 16 这将返回以下错误 Traceback most recent call last File
  • 在 C# 中更改子文件夹的权限

    我正在编写一个 DLL 来更改文件夹及其下所有内容的权限 下面是我现在拥有的代码 当我调用 addPermissions 时 问题就出现了 它正确设置了 dirName 文件夹以及我稍后在 dirName 下创建的任何文件夹的权限 但是当我
  • 如何在 React Native 中将一个组件的状态传递给另一个组件?

    我正在研究 React Native 我首先运行有两个文件geolocation函数获取坐标并将其分配给状态 现在我想在我的第二个文件中访问这个状态 我尝试使用props但当我控制台日志时它显示未定义 请帮助我是新手 export defa