Обработка ошибок в RTK Query
Не могу получить доступ к данным об ошибке в RTK Query. В документации четко показано, что объект ошибки, который достается из генерируемого хука мутации имеет поле data
.
На деле же объект имеет юнион тип FetchBaseQueryError | SerializedError | undefined
. И при попытке получить доступ к полю data
typescript говорит о том, что такого поля не существует.
Пытался даже использовать метод transformErrorResponse
внутри функции createApi
. Но, при попытке задать свою структуру объекта, возникает множество конфликтов с типизацией, в результате чего изменению поддается только поле status
.
api.ts
export const authApi = createApi({
reducerPath: "api/auth",
baseQuery: fetchBaseQuery({ baseUrl: `${process.env.REACT_APP_BASE_URL}/auth` }),
endpoints: (builder) => ({
login: builder.mutation<ResponseBody, RequestBody>({
query: (body) => ({
url: 'login',
method: "POST",
body
})
}),
register: builder.mutation<ResponseBody, RequestBody>({
query: (body) => ({
url: 'registration',
method: "POST",
body,
}),
async onQueryStarted(queryBody, { dispatch, queryFulfilled }) {
try {
const { data } = await queryFulfilled
const user = decodeToken(data.token)
dispatch(authorizeUser(user))
} catch (err) {
console.error(err)
}
},
})
})
component.tsx
export const RegistrationBody: React.FC = () => {
// ... //
const [register, { error, isError, data }] = useRegisterMutation()
const submit = async (event: React.MouseEvent) => {
event.preventDefault()
await register({ email, password })
}
// ... //
if (isError && error) console.log(error.data)
return (
// ... //
)
}
В компоненте, при попытке получить доступ к полю data
, получаю ошибку
Property 'data' does not exist on type 'FetchBaseQueryError | SerializedError'. Property 'data' does not exist on type 'SerializedError'.