#reactjs #typescript #redux #react-redux #frontend
#reactjs #typescript #redux #react-redux #интерфейс
Вопрос:
У меня есть reducer для клиентских приложений. Поскольку существуют два разных приложения, я должен обрабатывать разные полезные нагрузки.
export interface CLIENT_STATE_APPLICATION_ONE {
clientData: ClientData | null;
application: ApplicationData | null;
detailedLoan: any;
customerId: string;
}
export interface CLIENT_STATE_APPLICATION_TWO {
clientData: ClientData | null;
application: EntityInstance | null;
detailedLoan: any;
customerId: string;
}
const initialValues = {
clientData: null,
application: null,
detailedLoan: null,
customerId: '',
};
export default function(state = initialValues, action: {type: CLIENT_ACTIONS,
payload: Pick<CLIENT_STATE_APPLICATION_ONE, 'clientData' | 'application' | 'customerId'>}) {
switch (action.type) {
case CLIENT_ACTIONS.SET_CLIENT_DATA:
return {
...state,
clientData: action.payload
};
case CLIENT_ACTIONS.SET_CLIENT_APPLICATION:
return {
...state,
application: action.payload,
};
case CLIENT_ACTIONS.SET_CUSTOMER_ID:
return {
...state,
customerId: action.payload,
};
default:
return state;
}
}
как сделать это для второй полезной нагрузки? Я также хочу сделать это для приложений второго типа. Теперь это работает только для первого.
Комментарии:
1. Похоже, вы устанавливаете весь объект полезной нагрузки для каждого свойства:
customerId: action.payload
2. Но чтобы ответить на ваш вопрос, вы могли бы использовать разные
action.type
значения для каждого приложения, вы могли бы добавить дополнительное свойство в полезную нагрузку дляapplicationType
, или вы могли бы выяснить, какой тип он имеет во время выполнения, изучив значения.