我可能发生了一些奇怪的事情,我向端点“ / Login”发送了一个请求,并且响应很好!
我做了我的工作,但是由于某种原因,我看到一条警告,说,
未处理的承诺拒绝/ typeError:undefined不是对象 (评估“ error.response.data”)
如果有人对此有解释?
代码段
signIn = data => {
this.setState({loading: true});
API.post('/login', data)
.then(response => {
let {
data: {
data: {
response: {token},
},
},
} = response;
this.setState({loading: false});
reactotron.log('response', response);
reactotron.log(token);
deviceStorage.saveKey('id_token', token);
})
.catch(error => {
alert('catched!!'); // it's appear :)
this.setState({error: error.response.data, loading: false});
reactotron.error(error.response.data);
});
};
= 这个函数在这里出错了〜_〜!
为什么给我一个错误?
_deviceStorage.default.saveKey is not a function
import { AsyncStorage } from '@react-native-community/async-storage';
import reactotron from 'reactotron-react-native';
const deviceStorage = {
// our AsyncStorage functions will go here :)
saveItem= async(key, value)=>{
try {
await AsyncStorage.setItem(key, value);
} catch (error) {
reactotron.log('AsyncStorage Error: ' + error.message);
}
}
};
export default deviceStorage;
答案 0 :(得分:3)
error
是错误消息(拒绝消息)的字符串表示形式。但是当您说error.response.data
.catch(error => {
alert('catched!!'); // it's appear :)
this.setState({error: error, loading: false});
reactotron.error(error.response.data);
});
答案 1 :(得分:1)
如果在then块中遇到错误,则可以调用catch。检查您的then块是否有任何可能的错误。这也许就是即使承诺返回成功也要调用catch的原因。
const promise1 = new Promise(function(resolve, reject) {
resolve("resp");
});
promise1.then(function(resp) {
console.log(resp);
throw 'error'
}).catch(function(error) {
console.error(error);
});