【问题标题】:React native unhandled promise rejection p0反应原生未处理的承诺拒绝 p0
【发布时间】:2019-07-31 08:26:12
【问题描述】:

您好,我在运行项目时遇到上述错误,我做错了什么?

import * as WebBrowser from 'expo-web-browser';
import React , {Component} from 'react';
import {PermissionsAndroid} from 'react-native';
import {
    Image,
    Platform,
    ScrollView,
    StyleSheet,
    Text,
    Button,
    TouchableOpacity,
    View,
    Switch
} from 'react-native';
import { MonoText } from '../components/StyledText';
import {Linking , SMS }from 'expo';
import * as Permissions from 'expo-permissions'

class Sendsms extends Component {
    state = {switch1Value: false}

    toggleSwitch1 = (value) => {
        this.setState({switch1Value: value});
        console.log('Switch 1 is: ' + value);

    }

    askSMSPermissionsAsync = async () => {
        await Permissions.askAsync(Permissions.SMS);
    };
    HandlePress = () =>{
        console.log('try to send sms');

    }

    render(){
        return(
            <View>
            <Text>{this.state.switch1Value ? 'Switch is ON' : 'Switch is OFF'}</Text>
            <Switch onValueChange = {this.toggleSwitch1.bind(this)} value = {this.state.switch1Value}/>
        <Button title="sendSMS"  onPress={this.askSMSPermissionsAsync} />
        </View>
    )
    }
}

我尝试重建项目并删除构建文件夹,但没有成功 我也尝试将代码复制到其他项目中仍然相同的错误

export default Sendsms;

【问题讨论】:

    标签: react-native


    【解决方案1】:

    您需要将您的 await 调用包装在 try/catch 中以处理被拒绝的承诺。我不知道为什么它会被拒绝,但你可以通过console.log 来找出答案:

      askSMSPermissionsAsync = async () => {
        try {
          await Permissions.askAsync(Permissions.SMS);
        } catch(e) {
          console.log(e);
        }
      };
    

    请记住,await 只是承诺的语法糖。

    【讨论】:

    【解决方案2】:

    await Permissions.askAsync(Permissions.SMS); 产生一个可能被拒绝的 Promise。使用 Promise 时,请始终使用 try {} catch(e) {} 来捕获任何拒绝。 查看日志以获取有关拒绝的更多信息。

    所以:

    askSMSPermissionsAsync = async () => {
      try {
        await Permissions.askAsync(Permissions.SMS);
      } catch (e) {
        console.error(e);
      }
    };
    

    【讨论】:

      猜你喜欢
      • 2018-04-19
      • 2019-10-06
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      相关资源
      最近更新 更多