Redux - отправка действия, которое должно быть выполнено одним редуктором в иерархии редукторов. - PullRequest
0 голосов
/ 30 января 2019

Представьте, что у нас есть следующая структура хранилища:

store: {
  containers: {
    1000: { /*some data*/ },
    1001: { /*some data*/ }
  },
  items: {
    2000: { /*some data*/ },
    2001: { /*some data*/ }
  },
  mappings: {
    1000: [1001],
    1001: [2000, 2001]
  }
}

Представьте, что контейнеры и элементы совместно используют некоторый фрагмент данных - назовем его pieceOfData.И давайте представим, что в данный момент активен только один элемент.

pieceOfData, извлеченный из / измененный в хранилище, определяется ближайшим «листом» в иерархии.

Таким образом, когда элемент 2000 активен, извлеченный pieceOfData найденсначала проверяя его в элементе 2000, затем в контейнере 1001, затем в контейнере 1000. Если pieceOfData не найден ни в одном из этих объектов, возвращается значение null.

Это достаточно тривиально, чтобы использовать селекторы.Сложная часть происходит, когда мы пытаемся отправить действие, чтобы изменить это pieceOfData.Каждый контейнер и элемент редуктора совместно используют редуктор pieceOfData, который выполняет те же действия.Таким образом, при нормальных обстоятельствах отправка приведет к изменению каждого pieceOfData.

Как тогда можно убедиться, что правильный редуктор pieceOfData обрабатывает действие?

Одним из решений является отправка идентификатора вместе с диспетчерским вызовом, что означает, что когда я получу pieceOfData, он также должен будет вернуть этот идентификатор.Но в идеале я бы хотел этого избежать, поскольку компонент, связанный с обновлением pieceOfData, не должен знать, что такая иерархия существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...