您对 Formik 执行此操作的大部分时间是检查验证错误。假设您使用createAsyncThunk
的是 Redux-Toolkit for loginSumbmit
,您可以立即获取有效负载并通过执行以下操作检查错误/成功:
const formik = useFormik({
initialValues,
onSubmit : async (values) => {
const resultAction = await dispatch(loginSumbmit(values));
if (loginSumbmit.fulfilled.match(resultAction)) {
// it was a success, you can check resultAction.payload or use `unwrapResult`
} else {
// there was an error, handle it
}
},
validationSchema,
});
另一种选择是:
const formik = useFormik({
initialValues,
onSubmit : values => dispatch(loginSumbmit(values))
.then(unwrapResult)
.then(originalPromiseResult => {
// do something with the success payload
})
.catch(serializedError => {
// do something with the error payload
}),
validationSchema,
});
此处的文档中有此确切行为的示例:https ://redux-toolkit.js.org/api/createAsyncThunk#examples
通常,您永远不需要在同一滴答中的 thunk 之后立即获得商店的确切快照。您尝试使用选择器获取的任何内容都应该在导致存储更改的有效负载中可用。