Безопасно делитесь состоянием Redux со сторонними скриптами

Есть ли хорошая/плохая практика делиться состоянием хранилища избыточности со сторонними скриптами? В настоящее время мы используем файлы cookie для предоставления некоторой информации о состоянии сторонним сценариям (неконфиденциальная информация о состоянии). Однако мы знаем, что источником правды для приложения является магазин избыточности. Итак, чтобы оставаться в соответствии с основными принципами редукции, есть ли у вас какие-либо рекомендации?

Вот пример. Итак, у нас есть несколько устаревших скриптов, которые необходимо запускать параллельно с нашим приложением react-redux, и в настоящее время они считывают некоторые файлы cookie перед выполнением. Например, предположим, что у нас есть файл cookie с именем «имя пользователя» и значением «джон». Сторонний сценарий считывает этот файл cookie, и если значение равно «john», он что-то делает.

Внутренне наше приложение реакции/редукции считывает/устанавливает этот файл cookie с помощью редукторов/действий, но сторонний скрипт не является редуктором, и ему просто нужно знать это значение «имя», а также получать уведомления, если оно изменяется.

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

Также кажется, что библиотека redux-watch может быть полезна: https://github.com/jprichardson/redux-watch


person chris    schedule 29.09.2016    source источник


Ответы (1)


Для этого вам не нужен модуль реакции. Ваши сторонние скрипты могут просто подписаться на магазин, чтобы получать обновления:

store.subscribe(() => {
  const username = usernameFromState(store.getState());
  // run the 3rd party code with the username
});

Я не понимаю, почему это не должно быть проблемой. Я думаю, что даже сторонние сценарии могут отправлять действия в хранилище, поскольку вы сказали, что хранилище «является единственным источником истины для приложения». И сторонние сценарии являются частью этого приложения.

person Scarysize    schedule 29.09.2016