Я пытаюсь сохранить новые данные, не перезаписывая предыдущее состояние, основная проблема заключается в следующем: я не могу сохранить предыдущие данные, когда мы используем модель, если не использовать другое значение в качестве хранилища (мы используем эту модель, чтобы избежать красного экрана undefined death).
Это редуктор, интересующие данные - первое значение data: logisticReceipt()
export const initialState: LogisticReportState = {
data: logisticReceipt(),
details: {},
testConcat: [],
};
///// REDUCER //////////////////////////////////
const logisticsReportReducer: Reducer<LogisticReportState, Action<ACTION_TYPE>> = (
state = initialState,
{ type, payload },
) =>
produce(state, draft => {
switch (type) {
case ACTION_TYPE.SET_REPORT_LOGISTIC_DATA:
draft.testConcat = draft.testConcat.concat(payload);
draft.data = logisticReceipt(draft.testConcat);
break;
case ACTION_TYPE.FETCH_REPORT_LOGISTIC_DATA_REQUEST:
draft.data = {};
break;
case ACTION_TYPE.SET_REPORT_LOGISTIC_DETAILS:
draft.details = payload;
break;
case ACTION_TYPE.FETCH_REPORT_LOGISTIC_DETAILS_REQUEST:
draft.details = {};
break;
default:
break;
}
});
это модель, которую мы использовали, чтобы избежать неопределенной ошибки
export default (data = []) => ({ logistic: data || [] });
Теперь, на мой взгляд, код, который я написал, не выдает ошибок, он работает, но это ужасно, и мне немного стыдно писать что-то подобное.
Есть лучший способ переформулировать строки draft.data, избегая использования другого состояния для сохранения предыдущих данных?
case ACTION_TYPE.SET_REPORT_LOGISTIC_DATA:
draft.testConcat = draft.testConcat.concat(payload);
draft.data = logisticReceipt(draft.testConcat);
break;