У меня проблема с редукционным преобразователем в реакции. В файле thunk я использую для отправки действий и изменения флагов isSuccess и isLoading из редуктора, но в компоненте после вызова API я получаю их предыдущее значение вместо текущих.
components.jsx
await addClient(valueToSubmit, employee.tenantId).then((response) => {
if (isSuccess) {
showToast(toastTypes.SUCCESS, translate("client_add_success"));
resetForm();
setSubmitting(false);
toggleModal();
setFieldsWithError([]);
} else {
showToast(
toastTypes.ERROR,
message.debugMessage?.includes("exist")
? translate("client_exist_error")
: translate("client_add_error")
);
setFieldsWithError(message.payload);
}
});
thunk.js
export const addClient = (data, tenant) => async (dispatch) => {
const tenantId = tenant?.replace(/['"]+/g, "");
dispatch(requestAddClient());
return await api(
"post",
apiUrl,
data,
tenant ? { "tenant-uuid": tenantId } : {},
false
)
.then((response) => {
return dispatch(receiveAddClient(response.data.payload));
})
.catch((err) => {
return dispatch(errorAddClient(err.response));
});
};
actions.js
export const requestAddClient = () => {
return {
type: REQUEST_ADD_CLIENT,
};
};
export const receiveAddClient = (client) => {
return {
type: RECEIVE_ADD_CLIENT,
client: client,
};
};
export const errorAddClient = (message) => {
return {
type: ERROR_ADD_CLIENT,
message,
};
};
редуктор.js
case REQUEST_ADD_CLIENT:
return {
...state,
client: {},
isSuccess: false,
isLoading: true,
};
case RECEIVE_ADD_CLIENT:
return {
...state,
client: action.client,
clients: [...state.clients, action.client],
isSuccess: true,
isLoading: false,
};
case ERROR_ADD_CLIENT:
return {
...state,
client: {},
message: action.message.data,
isSuccess: false,
isLoading: false,
};
и я не могу решить эту проблему. Если кто знает причину, подскажите. Заранее спасибо!