我正在try 请求并获得用户的位置.这是我的密码.我正在try 这样做,这样用户一出现在屏幕上,就会被要求提供他的位置,因此使用了useEffect.

我在另一个屏幕上执行了类似的操作来访问用户的图片库,但AccessLocation函数的类似功能只有在用户按下某个按钮时才会被调用,并且它不会抛出该错误.

当函数处于useEffect时,其语法或调用函数的方式是否有所不同?我还在学习react ,所以别对我太客气了.

import { View, Text } from "react-native";
import React, { useEffect, useState } from "react";

export default function DateFinder() {
  const [hasForegroundPermissions, setHasForegroundPermissions] =
    useState(null);
  const [userLocation, setUserLocation] = useState(null);

  useEffect(() => {
    const AccessLocation = async () => {
      function appSettings() {
        console.warn("Open settigs pressed");
        if (Platform.OS === "ios") {
          Linking.openURL("app-settings:");
        } else RNAndroidOpenSettings.appDetailsSettings();
      }

      const appSettingsALert = () => {
        Alert.alert(
          "Allow Wassupp to Use your Location",
          "Open your app settings to allow Wassupp to access your current position.",
          [
            {
              text: "Cancel",
              onPress: () => console.warn("Cancel pressed"),
            },
            { text: "Open settings", onPress: appSettings },
          ]
        );
      };

      const foregroundPermissions =
        await Location.requestForegroundPermissionsAsync();
      if (
        foregroundPermissions.canAskAgain == false ||
        foregroundPermissions.status == "denied"
      ) {
        appSettingsALert();
      }
      setHasForegroundPermissions(foregroundPermissions.status === "granted");
      if (hasForegroundPermissions == true) {
        const location = await Location.getCurrentPositionAsync({
          accuracy: Location.Accuracy.Highest,
        });
      }
    };

    AccessLocation();
  });

  return (
    <View>
      <View>
        <Text>"Home, sweet home"</Text>
      </View>
    </View>
  );

  const styles = StyleSheet.create({
    background: {
      backgroundColor: COLORS.background_Pale,
      flex: 1,
      // justifyContent: "flex-start",
      //alignItems: "center",
    },
    image: {
      flex: 1,
      // height: null,
      // width: null,
      //alignItems: "center",
    },
    scrollView: {
      backgroundColor: COLORS.background_Pale,
    },
  });
}

当我按下警告时,它显示promiseRejectionTrackingOptions.js(43:17).

推荐答案

我以前遇到过很多次这样的事情.这个警告通常是因为你没有为某个promise 添加catch块.如果你的promise 遭到拒绝,你需要付catch英镑.

我防止此警告的最简单方法是将代码包装在try{}...catch(err)个块中.

这是防止因某些错误而崩溃的最好方法,也可以处理promise 拒绝.

try{ 
    // Your code
}
catch(err){
   // handle rejection
   console.error(err)
}

您可以只包装try中的promise ,也可以包装整个代码作为预防措施,如下所示

useEffect(()=>{
    try{
        // your code
    }
    catch(err){
         console.error(err)
    }
})

然而,为了更好地理解和调试,如果出现任何错误,我建议保留多个try...catch(特定于代码/promise 的一部分).

Javascript相关问答推荐

当promise 在拒绝处理程序被锁定之前被拒绝时,为什么我们会得到未捕获的错误?

Snowflake JavaScript存储过程返回成功,尽管预期失败

IF语句的计算结果与实际情况相反

当输入字段无效时,我的应用程序不会返回错误

Rxjs流中生成IMMER不能在对象上操作

从另一个数组中的对应行/键值对更新数组中的键值对对象

在FAQ Accodion应用程序中使用React useState时出现问题

Node.js错误: node 不可单击或不是元素

将Auth0用户对象存储在nextjs类型脚本的Reaction上下文中

Clip-Path在网页浏览器(Mozilla、Edge、Chrome)上不能正常工作,但在预览版Visual Code Studio HTML、CSS、JS上却能很好地工作

使用props 将VUE 3组件导入JS文件

material UI自动完成全宽

如何按区域进行过滤并将其从结果数组中删除?

如何在Java脚本中添加一个可以在另一个面板中垂直调整大小的面板?

单击子按钮时将活动切换类添加到父分区

Playwright:ReferenceError:browserContext未定义

元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但GET:Object.在Reaction项目中

我正在为我的单选按钮在HTML中设置一个值.使用Java脚本,我如何才能获得该值?

如何将PNG图像放在wix站点的Open Streemap map 上,使PNG图像成为 map 不可分割的一部分?

如何在父IF条件和单个IF条件中形成嵌套的三元语句