javascript - 组件无法捕获作为 prop 传递的函数中的错误

标签 javascript reactjs error-handling

我有一个 Form 组件,当单击提交按钮时,它会调用:

//Form.js
    //...
    const submit = () => {
            try {
                onSubmit(values); //onSubmit from props, values from state
            } catch (error) {
                console.log(error);
                setSubmitError(error);
            }
    }
    //...

我尝试将它与传递的 onSubmit 一起使用:

export const signIn = ({ email, password }) => (
    auth()
    .signInWithEmailAndPassword(email, password)
    .catch(e => { throw e })
);

但它无法处理它。在当前版本中,它会向控制台抛出错误:auth.esm.js:429 Uncaught The email address is bad formatted.我尝试用new Error包装错误,但随后它会将其扔到窗口上。我做错了什么?

最佳答案

普通的 try/catch block 无法捕获异步错误。但是,您可以声明一个异步 block ,这应该可以工作:

const submit = async () => {
            try {
                await onSubmit(values); //onSubmit from props, values from state
            } catch (error) {
                console.log(error);
                setSubmitError(error);
            }
    }

关于javascript - 组件无法捕获作为 prop 传递的函数中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55669434/

相关文章:

javascript - 当数据类型混合时从 Google 电子表格访问数据

reactjs - 在react和typescript中解构useState中的状态

reactjs - 如何使用 useReducer 钩子(Hook)测试组件?

php - fatal error : Class 'ipsRegistry' not found - PHP

flutter - xcrun : error: invalid active developer path, problem after zsh update for flutter

c# - 使用 Entity Framework 4 在 C# 中处理异常

javascript - 具有日期时间和多列的 Highstock

javascript - Highcharts 禁止点击列

javascript - Owl carousel .destroy() 删除不相关的 div

javascript - 从 url react 加载 svg 图像