Как работать с ngrx / store с офлайн-данными? - PullRequest
0 голосов
/ 23 июня 2019

Я новичок в Redux и начал с ngrx.Я не могу понять концепцию магазина и его цель.

Скажем, у меня есть приложение книжного магазина.Я могу покупать или продавать книги пользователям.

Я использую ngrx для получения списка книг, используя это действие: LOAD_BOOKS, затем я использую эффекты, чтобы загрузить из http список книг и сохранить его обратно вмагазин.

Когда я вошел в /books, перед загрузкой компонента у меня есть охрана.в этом стороже я проверяю, находится ли список книг в магазине (если нет, я отправляю действие LOAD_BOOKS), и после загрузки списка я рендеринг компонента, который отображает все книги (из магазина)

далеевремя, когда я снова вошел в /books, список находится в Магазине.

Итак, я понимаю, что мне не нужно звонить по http, чтобы принести мне этот список, потому что у меня есть этот список в магазине.

Но что случилось, если кто-то еще купил одну из книг?мой список доступных книг в магазине не обновляется.

Мне никогда не удавалось обновить, потому что оно уже есть в магазине.

Итак, мой вопрос: как мне справиться с этим сценарием?что хранить, а что нет?Какова цель этого магазина, если не хранить данные.проблема в том, что делать, когда данные меняются внутри сервера?Я работаю над "автономными" данными

1 Ответ

1 голос
/ 23 июня 2019

Таким образом, в первом случае это общая проблема, а не только сохранение в памяти того, что при изменении данных сервера клиент не обновляется автоматически из-за использования http, для этого вам следует использовать широковещательную передачу, например, с помощью websocket.

Цель хранилища состоит в том, чтобы изменить архитектуру приложения, чтобы она имела единый источник правды, если нескольким компонентам страницы, не относящимся к parent-> child, требуются одни и те же данные, которые вы связываете их с хранилищем, и каждый раз, когда данные хранилища меняются, вы обновляете данные своего компонента также. Поэтому, если вы предполагаете, что не можете воспроизвести одно и то же с помощью простого сервиса, если у вас есть много компонентов на странице с разной взаимосвязью, их сложно связать вместе, и когда данные обновляются в одном из distrubute для остальных из них и могут привести к ошибкам.

Магазин не предоставляет вам волшебный способ автономной работы с сервером, когда вы не можете подключиться к серверу, вы просто напоминаете пользователю, что он не может получить данные или выполнить действие, как если бы вы работали со службой http.

Для получения дополнительной информации я рекомендую вам прочитать об архитектуре Flux, так как на ней основаны оба параметра: redux и ngrx. Я думаю, это прояснит преимущества, которые предлагает магазин, и в каких типах приложений он должен быть реализован.

...