Digamos, por ejemplo, cuando una función de inicio de sesión llama a una API y devuelve un error debido a algo como credenciales no válidas. He notado que aun pasa por el caso cumplido en la parte de extra reductores. ¿Debo agregar una declaración if para verificar si el código de respuesta es 200 o hay alguna forma de que el thunk pase por el caso rechazado?
extraReducers: builder => { builder.addCase(login.pending, (state, action) => { state.fetchingError = null; state.fetchingUser = true; }); builder.addCase(login.fulfilled, (state, {payload}) => { console.log(payload, 'hello?'); state.user = payload.data.user; }); builder.addCase(login.rejected, (state, action) => { state.fetchingUser = false; state.fetchingError = action.error; }); },Puede usar el rechazo con createAsyncThunk rejectWithValue personalizar la acción de rechazo.
También toma un argumento que será "action.payload" en la acción de rechazo.
En createAsyncThunk :
const updateUser = createAsyncThunk( 'users/update', async (userData, { rejectWithValue }) => { const { id, ...fields } = userData try { const response = await userAPI.updateById(id, fields) return response.data.user } catch (err) { // Use `err.response.data` as `action.payload` for a `rejected` action, // by explicitly returning it using the `rejectWithValue()` utility return rejectWithValue(err.response.data) } } )https://redux-toolkit.js.org/api/createAsyncThunk#handling-thunk-errors