簡體   English   中英

組件無法捕獲作為道具傳遞的函數中的錯誤

[英]Component can't catch error from function passed as a prop

我有一個Form組件,當單擊Submit按鈕時,它調用:

//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 badly formatted. 我嘗試用new Error包裝new Error ,但隨后將其拋出到窗口中。 我究竟做錯了什么?

正常的try / catch塊無法捕獲異步錯誤。 但是,您可以聲明一個異步塊,這應該可以工作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM