Большую часть времени вы делаете это в отношении Formik, чтобы проверить наличие ошибок валидации. Предполагая, что вы используете createAsyncThunk
из Redux-Toolkit для 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 в том же тике. Все, что вы пытаетесь получить с помощью селектора, должно быть доступно в полезной нагрузке, вызвавшей изменение хранилища.