Я конвертирую существующую модель состояния в Redux, и по большей части она была безболезненной. Однако в одном случае у меня возникают проблемы с преобразованием "наблюдаемых" запросов состояния ajax. По сути, у меня есть определенные запросы ajax, "связанные" с другими частями штата, поэтому независимо от того, кто их модифицирует, они всегда будут выдаваться правильно. Я получаю подобное поведение, подписываясь на обновления магазина Redux, но стрельба в слушателе выглядит как хак.
Возможное решение - переместить логику в создателя действия через шаблон thunk. Проблема в том, что мне придется либо дублировать логику выборки по действиям (поскольку несколько действий могут изменять "наблюдаемое" состояние), либо тянуть большую логику редуктора до уровня создателя действия. Создатель действия также не должен знать, как редукторы будут реагировать на выпущенные действия.
Я мог бы выполнять "под-действия", поэтому мне нужно разместить соответствующую логику выборки в каждом "блоке" действия, но это, по-видимому, нарушает концепцию действий, создающих действительное состояние. Я бы предпочел получить эту ответственность на уровне создателя действия.
Есть ли общепринятые правила, связанные с этим? Это не простое приложение, в котором ad hoc-запросы ajax выполняются по мере взаимодействия компонентов, большинство данных распределяется между несколькими компонентами, а запросы оптимизируются и извлекаются в ответ на изменение состояния.
TL;DR; Я хочу запускать ajax-запросы в ответ на изменения состояния, а не когда происходит определенное действие. Есть ли лучший, "специфичный" для Redux способ организации action/actionCreators, чтобы издеваться над этим поведением, за исключением того, что они запускают эти действия в слушателе подписки?