Я изменил исходный файл App.js из create-реагировать на приложение, чтобы протестировать три разных необработанных отклонения обещания, сгенерированное вручную, одно из выборки и одно из Axios:
Когда я нажимаю первую кнопку (Обещание), появляется наложение реакции на ошибку и описывает необработанное отклонение. Это ожидается.
Когда я нажимаю вторую или третью кнопки (Fetch или Axios), наложение реакции-ошибки не появляется, но консоль регистрирует ошибку, которая убеждает меня, что я возвращаю необработанное отклоненное обещание. Почему оверлей create-реагировать-приложение / реагировать на ошибки не обнаруживает эти необработанные отклонения и выдает наложение?
Я пробежал:
create-react-app
npm install axios
App.js
import React, { Component } from 'react';
import axios from "axios"
class App extends Component {
constructor(props) {
super(props)
this.doPromise = this.doPromise.bind(this)
this.doFetch = this.doFetch.bind(this)
this.doAxios = this.doAxios.bind(this)
}
doPromise() {
return new Promise(function (resolve, reject) {
setTimeout(function() {
reject(new Error('Manual Rejection'))
}, 100)
}).catch(function(e) {
console.log("doPromise: " + e.message)
return Promise.reject(e)
})
}
doFetch() {
return fetch("http://invalid.not-a-real-tld/").catch(function(e) {
console.log("doFetch: " + e.message)
return Promise.reject(e)
})
}
doAxios() {
return axios.get("http://httpstat.us/404").catch(function(e) {
console.log("doAxios: " + e.message)
return Promise.reject(e)
})
}
render() {
return (
<div>
<button onClick={this.doPromise}>Promise</button>
<button onClick={this.doFetch}>Fetch</button>
<button onClick={this.doAxios}>Axios</button>
</div>
)
}
}
export default App;
package.json:
{
"name": "throw-bug",
"version": "0.1.0",
"private": true,
"dependencies": {
"axios": "^0.18.0",
"react": "^16.8.4",
"react-dom": "^16.8.4",
"react-scripts": "2.1.8"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
]
}
Другие детали:
Windows 10
Chrome 72.0.3626.121