Объединить данные из разных частей дерева хранилища и действия отправки?

#redux #react-redux

#сокращение #реагировать-сокращение

Вопрос:

У меня есть данные, которые считываются с разных конечных точек и зависят друг от друга, как если бы они были реляционными таблицами.

Пример ответа от конечной точки users_country , например, может быть

 [
  { id: 4, first_name: "Mary", last_name: "Jones", country: "Brazil" },
  { id: 7, first_name: "Peter", last_name: "Martinez", country: "US" },
  { id: 14, first_name: "Joe", last_name: "Roland", country: "France" }
]
  

Это хранится в хранилище redux с помощью редуктора, предположим, что он называется countries.

Затем я также получаю данные из ws, обрабатываемые usersPets reducer. Я получаю новую строку каждый раз, когда пользователь заводит питомца (это вымышленный пример)

Я получаю объект { id: 4, first_name: "Mary", last_name: "Jones", pet: "cat" } и добавляю его к данным пользовательских настроек в хранилище redux

 [      
  { id: 104, first_name: "Jesus", last_name: "Martin", pet: "cat" },
  { id: 4, first_name: "Mary", last_name: "Jones", pet: "cat" }
]
  

Затем есть конечная точка user_details , которая вызывается по идентификатору пользователя, который предоставляет сведения о конкретном пользователе, который возвращает более подробные данные для этого пользователя.

Для каждого из идентификаторов в хранилище redux я должен вызывать этот идентификатор конечной точки по идентификатору, но только один раз для каждого идентификатора.

Где я должен выполнить этот вызов и как это спроектировать?

Мне нужно было бы сохранить идентификаторы, для которых user_details уже был вызван отдельно? как мне это сделать из редуктора? Я не могу

Должен ли я обрабатывать это из действий? Отправлять действие каждый раз, когда у меня появляется новая строка для users_country и users_that_have_pets ?

Я не понимаю, как справиться с этой проблемой

Я думаю, что мне нужно знать, есть ли в коде вне компонентов место, где А) у меня есть доступ к хранилищу и я знаю, когда оно обновляется, и Б) могу отправлять действие.

Комментарии:

1. Используете ли вы какие-либо библиотеки промежуточного программного обеспечения для сокращения, например, redux-thunk или redux-saga ? Эти «побочные эффекты» проще реализовать с использованием одной из вышеупомянутых библиотек. Например, используя redux-saga, вы можете выполнить функцию, которая может извлекать дополнительные данные, если они не существуют в хранилище redux.

2. @Christiaan Я использую сокращение-thunk. Я не эксперт в этом

3. @Christiaan Мне посоветовали использовать redux-toolkit.js.org/api/createAsyncThunk но я вообще этого не понимаю