3 回答

TA貢獻2065條經驗 獲得超14個贊
從文檔中:
即使響應是 HTTP 404 或 500,從 fetch() 返回的 Promise也不會拒絕 HTTP 錯誤狀態。相反,它將正常解析(將 ok 狀態設置為 false),并且只會拒絕網絡故障或如果有任何事情阻止請求完成。
所以你應該檢查 response.ok:
fetch(request, { method: 'GET' }).then(response => {
return response.ok
? response.json()
: Promise.reject(new Error('Response not ok'));
});

TA貢獻1111條經驗 獲得超0個贊
我推薦你,比如在整個請求函數中說@fab put try ... catch:
request(texto) {
try{ // Added
var request = "https://reqres.in/api/users/"+texto;
fetch(request, {method: "GET"})
.then((response) => {
return response.json();
})
.then((responseJson) => {
// Actualizar el state con la respuesta
//console.log(this.error);
this.setState({nombre:responseJson.data.first_name})
})
.catch((error) => {
// Actualizar el state indicando que los datos son erróneos
console.log(error);
this.setState({nombre:error})
}).done();
}
requestCrear(nombre) {
var request = "https://reqres.in/api/users";
t(request, {method: "POST", headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
}, body: JSON.stringify({name: nombre})})
.then((response) => {
return response.json();
})
.then((responseJson) => {
// Actualizar el state con la respuesta
this.setState({nombre:responseJson.name})
})
.catch((error) => {
// Actualizar el state indicando que los datos son erróneos
this.setState({nombre:error})
}).done();
}
render() {
return (
<View style={{ padding: 60}}>
<TextInput
style={{height: 40}}
placeholder="Escribe un número para consultar"
onSubmitEditing={
(event) => {
this.request(event.nativeEvent.text)
}
}
/>
<TextInput
style={{height: 40}}
placeholder="Escribe un nombre para a?adir una persona"
onSubmitEditing={
(event) => {
this.requestCrear(event.nativeEvent.text)
}
}
/>
<Text style={{padding: 20, fontSize: 42}}>
{this.state.nombre}
</Text>
</View>
);
}catch (e) { // Added
console.log(e);
// Here evaluate the error (e) ;
}
}
添加回答
舉報