1) Звучит выполнимо.
2) Нет. Что бы ни делали работу.
Что бы я сделал
Я бы создал блог postPagination, в котором я бы держал данные нумерации страниц отдельно от сущностей. И действие BlogPaginate для изменения его состояния в функции редуктора.
{
{
sort: 'date',
filters: {
category: 'home',
tag: 'testTag'
}
},
page: 1
}
Я бы сделал эффект, который прослушивает действия маршрутизатора и сопоставляет соответствующие (url / blog / *) с соответствующими поисковыми фильтрами для действия BlogPaginate, которое, в свою очередь, вызовет вызов службы.
Если вы хотите кэшировать эти объекты
Возвращение к ранее просмотренным страницам было бы более плавным, чем раньше. В зависимости от скорости изменения содержимого я бы выбрал отправку действия или использование значения в кэше, если оно существует.
Тогда я бы добавил к состоянию postPagination:
{
pageContents: {
// map of page to entity ids
1: [1,8,222]
}
{
sort: 'date',
filters: {
category: 'home',
tag: 'testTag'
}
},
currentPage: 1,
totalPages: 10
}
- При изменении параметров разбивки на страницы / сортировки в редукторе BlogPaginate я должен очистить pageContents.
- Когда в редукторе BlogPaginateSuccess изменится значение totalPages ответа на нумерацию страниц, я очистлю другие страницы контекста.
- В редукторе BlogPaginateSuccess я добавляю / обновляю новые сущности в сообщениях блога и сопоставляю их идентификаторы как pageContents. Помните, что редукторы могут реагировать на любые действия.
- Я бы также создал селектор, который отображает postPagination.currentPage, postPagination.pageContents и post.entities в массив объектов блога.