У меня есть универсальный c компонент, который называется VendorResults. Я передаю строку поддержки каждому из этих общих c компонентов, таких как «Microsoft», «Apple» и т. Д. c.
<ScrollView>
<SearchResults/>
<VendorResults vendor={"microsoft"}/>
<VendorResults vendor={"oracle"}/>
</ScrollView>
В этом универсальном c компоненте я передаю вендор в качестве параметра моим действиям Redux-Thunk следующим образом:
componentDidMount() {
const {vendor} = this.props;
this.props.getVendorInformation(vendor);
}
Вызывается вызов API, и Thunk действия отправляются. В конечном итоге данные попадают в Редуктор и сохраняются. Однако, когда у меня более одного универсального c компонента Vendor, какой бы асинхронный вызов c не завершился последним, создается впечатление, что он превалирует над всеми остальными. Например, если oracle заканчивает загрузку последней, состояние компонента Microsoft изменится и покажет oracle данные.
Действия
export function getVendorInformation(vendor) {
const url = `${VENDOR_URL}api/search/${vendor}`;
return dispatch => {
dispatch(getVendor());
fetch(url)
.then(blob => blob.json())
.then(data => {
dispatch(getVendorSuccess(data))
})
.catch(e => {
console.log(e);
dispatch(getVendorError(e.message))
});
};
Редуктор
export default function(state=initialState, action){
switch (action.type){
case FETCHING_VENDOR: return {payload:[], fetching: true}
case FETCH_VENDOR_SUCCESS: return {payload: action.payload.data}
case VENDOR_ERROR: return {payload:[], error: true, ...state}
}
return state;
}
Мой вопрос:
Я хочу сохранить этот шаблон общих / повторно используемых компонентов поставщика - я не хочу новый компонент для каждого поставщика , То же самое касается действий / редукторов; действия / редукторы уникальных поставщиков могут стать беспорядочными.
Как я могу разделить / разделить / разделить одно хранилище Redux на указанные поставщиком c порции, чтобы поддерживать разделение состояний, но при этом использовать один поток. Спасибо !!