Геттеры с параметрами в redux store

Вопрос:

Как в redux организовывать геттеры с параметрами?
В redux есть встроенный метот getState который возвращает весь state и с помощью него можно передать какую-то часть state нужным компонентам. Но что делать если нужно получать какие-то данные со state в зависимости от параметра?

Описание:

К примеру есть компонента Posts, которая отрисовывает список постов. Эта компонента должна принимать список постов state.posts.
Каждый пост в самом примитивном виде выглядит так:
{userId: "1322131", postText: "text", postTime: yesterday}.
Каждый пост содержит только userId, но компонента Posts должна для каждого отдельного поста отрисовывать еще имя и аватар пользователя. Аватар и имя пользователя содержатся в другой части state (а именно в state.users).
Работать должно примерно так: компонента Posts с помощью map пробегается по списку постов state.posts, отрисовывает текст, потом получает id каждого поста и на основе этого id получает avatar и name из списка пользователей state.users.
До этого я передавал через props список постов state.posts и 2 метода: getName(id) и getAvatar(id) которые были частью store. Сейчас все изменилось: store я пишу не сам, а создаю с помощью redux. В redux store есть только dispatch и getState.
--Dispatch( ) отвечает за изменение state, а получение аватара или имени не изменяют state.
--getState( ) тоже не подходит. Можно конечно передавать с помощью getState() помимо списка постов еще и список пользователей и уже в самой компоненте Posts писать логику получения аватара и имени. Но:

  1. мы лишний раз передаем огромный(потенциально) кусок state;
  2. логика с получением имени и аватара по id прописана не только в списке постов, а и в cписке друзей, списке сообщений, списке диалогов и еще потенциально много где. Писать по 10 раз одно и тоже в каждой компоненте так себе идея, а каждому обьекту поста, отдельного сообщения или друга добавлять лишние 2 поля имени и аватара кажется избыточным.

Как быть? Как организовать эти самые геттеры с параметрами в redux-store


Ответы (0 шт):