@Devastor
I ❤❤❤ JAVASCRIPT

Как правильно обновлять список в React Redux?

У меня есть Store:

{
filters: {category: [1,2], tag: [3]},
list:[]
}

Есть редьюсер и экшен:

//Reducer
 case FILTERS_CHANGED:
      return state.merge({filters: state.filters.merge(action.payload)});
//Action
return dispatch => {
  dispatch({type: constants.RESEARCH_FILTERS_CHANGED, payload: filter});
};

Из компонента Filters я изменяю объект filters из store при помощи action выше.
Как заставить делать запрос и ответ записывать в store.list при каждом изменении store.filters?

В Angular2 я бы сделал что-то вроде:

store.filters.subscribe(filters => {
//вызов action для подгрузки данных с бека и добавления их в лист
loadListAction(filters);
});

Как делать правильно подобное в React+Redux?
  • Вопрос задан
  • 1967 просмотров
Решения вопроса 1
@DarkSir
1) У redux есть метод subscribe.

2) Или поискать готовый плагин. Например: redux-watch, redux-subscribe, redux-changes. Естественно можно найти много других подобных плагинов и выбрать какой нужно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@amiksam
я бы сделал через Redux Middleware.

Добавляем middleware after.js

export default store => next => action => {
const {type} = action

const result = next(action)
switch (type) {
case constants.RESEARCH_FILTERS_CHANGED:
store.dispatch(loadListAction(store.getState().filters));
break;
}

return result
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы