Я создал загрузчик для загрузки файла CSV, который преобразуется в json и отправляется в API.
API имеет проверку, если данные недействительны, и возвращает ответ, который я вижу в моем отладчике:
{"success":false,"errorCode":"880ddb963e40","errorMessage":"There are Ids which do not exist in system"}
Мой пользовательский интерфейс выводит общее сообщение о том, что возникла проблема, как показано ниже, из моего редуктора:
import {
PUT_UPLOAD_CSV,
PUT_UPLOAD_CSV_SUCCESS,
PUT_UPLOAD_CSV_FAILURE
} from 'constants/BulkUploads/ActionTypes';
const INIT_STATE = {
uploadLoader: false,
uploadResponse: '',
uploadError: ''
}
export default (state = INIT_STATE, action) => {
switch (action.type) {
case PUT_UPLOAD_CSV: {
return {
...state,
uploadLoader: true,
uploadResponse: '',
uploadError: ''
}
}
case PUT_UPLOAD_CSV_SUCCESS: {
return {
...state,
uploadLoader: false,
uploadResponse: 'CSV file uploaded successfully',
uploadError: ''
}
}
case PUT_UPLOAD_CSV_FAILURE: {
return {
...state,
uploadLoader: false,
uploadResponse: '',
uploadError: 'An error occurred uploading CSV file, please check the data and try again.'
}
}
default:
return state;
}
}
Я хочу, чтобы дескриптор моих редукторов uploadError
мог возвращать API errorMessage, а не значение по умолчанию, чтобы ошибка была более конкретной, и / или использовать код ошибки в качестве поиска для отображения соответствующего сообщения.
Если кто-нибудь может помочь или указать мне какую-то документацию.
ОБНОВЛЕНИЕ - добавление моих действий
import {
PUT_UPLOAD_CSV,
PUT_UPLOAD_CSV_SUCCESS,
PUT_UPLOAD_CSV_FAILURE,
} from 'constants/BulkUploads/ActionTypes';
export const putUploadCSV = (payload) => {
return {
type: PUT_UPLOAD_CSV,
payload
};
};
export const putUploadCSVSuccess = (payload) => {
return {
type: PUT_UPLOAD_CSV_SUCCESS,
payload
}
};
export const putUploadCSVFailure = (payload) => {
return {
type: PUT_UPLOAD_CSV_FAILURE,
payload
};
};
Мой index.js
{uploadError ?
{uploadError}
:
{uploadResponse}
}
SAGA
function* putUploadCSVRequest(params) {
try {
const response = yield call(putUploadCSV, params.payload);
yield put(putUploadCSVSuccess(response));
} catch (error) {
console.error(error);
yield put(putUploadCSVFailure(error));
}
}