#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 но я вообще этого не понимаю