首页 > 解决方案 > 如何在 React 中使用“useErrorHandler()”?

问题描述

我从这里react-error-boundary看图书馆,但我不明白如何使用道具。useErrorHandler(error?: Error)

所以可以说我用错误边界包装我的应用程序 - 像这样

import {ErrorBoundary} from 'react-error-boundary';

<ErrorBoundary onError={myErrorHandler}>
  <App />
</ErrorBoundary>

如何使用“useErrorHandler”来捕获异步代码回调中的错误,例如传播到ErrorBoundary以便我可以使用myErrorHandler

“useErrorHandler”在哪里定义或导入?

我正在尝试将其用作捕获所有错误的设置-当您将 throws excection 添加到 java 中的 main 时。

异步代码示例:

  ...
  return new Promise(function (resolve, reject) {
      axios({
        ...
      })
        .then((res) => {
          resolve(res);
          // <-- ?
        })
        .catch((err) => {
          reject(err);
        });
    });

标签: javascriptreactjsreact-hooks

解决方案


该文档没有明确说明如何导入该useErrorHandler函数,但它是 API 的一部分,因此您可以使用与 import 相同的方式导入ErrorBoundary

import { useErrorHandler } from 'react-error-boundary';

例如:(基于文档


    import { useErrorHandler } from 'react-error-boundary';
    
    function Greeting() {
      const [greeting, setGreeting] = React.useState(null)
      const handleError = useErrorHandler()
     
      function handleSubmit(event) {
        event.preventDefault()
        const name = event.target.elements.name.value
        fetchGreeting(name).then(
          newGreeting => setGreeting(newGreeting),
          handleError,
        )
      }
     
      return greeting ? (
        <div>{greeting}</div>
      ) : (
        <form onSubmit={handleSubmit}>
          <label>Name</label>
          <input id="name" />
          <button type="submit"}>
            get a greeting
          </button>
        </form>
      )
    }


推荐阅读