在 utils.js 文件(React-Native)中调用异步函数?

Posted

技术标签:

【中文标题】在 utils.js 文件(React-Native)中调用异步函数?【英文标题】:Calling a asynchronous function within a utils.js file (React-Native)? 【发布时间】:2021-08-09 01:41:17 【问题描述】:

我正在为我的投资组合构建一个 react-native 天气应用程序。

我希望能够在我的 utils.js 文件中调用辅助函数。该函数是一个异步箭头函数,负责检索经纬度坐标。

函数返回数组中的坐标,我使用析构来设置组件的状态。

但是,我在控制台中收到一条警告,说明如下:

WARN 可能的未处理的 Promise Rejection (id: 1): TypeError: undefined 不是一个对象(评估 '_$$_REQUIRE(_dependencyMap[11], "../Utils/utils").globalFunctions.getLocation')

我可能做错了什么?任何帮助都会得到帮助。

Utils.js

import Permissionsandroid from 'react-native';
import Geolocation from 'react-native-geolocation-service';

const globalFunctions = 
  getLocation: async () => 
const coordinates = [];
const hasLocationPermission = await 
PermissionsAndroid.request(
  PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
);

if (hasLocationPermission == PermissionsAndroid.RESULTS.GRANTED) 
  Geolocation.getCurrentPosition(
    position => 
      console.log('Geolocation Granted');
      console.log(position);
      const latitude = position.coords.latitude;
      const longitude = position.coords.longitude;
      coordinates.push(latitude);
      coordinates.push(longitude);
      return coordinates;
    ,
    error => 
      console.log(error.code, error.message);
    ,
    enableHighAccuracy: true, timeout: 15000, maximumAge: 10000,
  );
 else 
  console.log('User denied Geolocation');

, ;

WeatherContainer.js

import React, Component from 'react';
import Text, Image, StyleSheet, View, StatusBar from 'react-native';
import globalFunctions from '../Utils/utils';

class WeatherContainer extends Component 
  constructor() 
    super();
    this.state = 
      lat: null,
      lon: null,
    ;
  

  componentDidMount = () => 
    this.getLocationData();
  ;

  getLocationData = async () => 
    const [latitude, longitude] = await globalFunctions.getLocation();
    this.setState(
      lat: latitude,
      lon: longitude,
    );
  ;

  render() 
    return (
      <View style=styles.container>
        <View style=styles.innerContainer>
          <Text style=styles.location>this.state.lat</Text>
          <Text>this.state.lon</Text>
        </View>
      </View>
    );
  

【问题讨论】:

您似乎没有从 Utils.js 导出任何内容 【参考方案1】:

你需要从 Utils.js 中导出 globalFunctions 函数

const export globalFunctions

【讨论】:

以上是关于在 utils.js 文件(React-Native)中调用异步函数?的主要内容,如果未能解决你的问题,请参考以下文章

utils.js文件;一些常用方法的备份

utils.js

vue自定义插件

在 firebase.utils.js 上的函数内部传递道具

Vue批量全局引入js及对应方法

Testcafe 在 embedding-utils.js 中跳过测试