私は次の構文で問題を把握するのに苦労しています:
export const sendVerificationEmail = async () =>
(dispatch) => {
try {
dispatch({ type: EMAIL_FETCHING, payload: true });
await Auth.sendEmailVerification();
dispatch({ type: EMAIL_FETCHING, payload: false }))
} catch (error) {
dispatch({ type: EMAIL_FETCHING, payload: false });
throw new Error(error);
}
};
私は言ってエラーを取得し続けます:
待つは予約語です
...しかし、非同期関数内では合法的ではありませんか?
ディスパッチビットは react-thunk ライブラリから来ています。
await
を使用するには、それを直接囲む関数は非同期である必要があります。あなたのコメントによると、内部関数にasync
を追加することであなたの問題は解決するので、ここに投稿します。
export const sendVerificationEmail = async () =>
async (dispatch) => {
try {
dispatch({ type: EMAIL_FETCHING, payload: true });
await Auth.sendEmailVerification();
dispatch({ type: EMAIL_FETCHING, payload: false }))
} catch (error) {
dispatch({ type: EMAIL_FETCHING, payload: false });
throw new Error(error);
}
};
おそらく、非同期操作が含まれていないために外部関数からasync
を削除できますが、それはそのsendVerificationEmail
の呼び出し側がsendVerificationEmail
にpromiseを返すことを期待しているかどうかによって異なります。