Почему оверлей Create React App не получает необработанное обещание от Fetch или Axios? - PullRequest
0 голосов
/ 14 марта 2019

Я изменил исходный файл 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...