Size: a a a

Clojure — русскоговорящее сообщество

2020 September 20

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
Кэширование в репоше даже не самое главное, самое главное это то что у датаскрипта всего один ивент который тригерится на все действия и в этом ивенте у тебя есть старая и новая база данных. Репош пытается читать tx-log и тригерить только те сабскрипшены в которых что либо поменялось
источник

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
Без этого пришлось бы тригерить все сабскрипшены каждый раз или самому лог разбирать
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
вот это очень интересно, спасибо
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
а вообще, в реагенте в какой момент тригерятся подписки? Вроде бы пишут в доках, что на любое изменение в базе.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Поэтому они должны быть дешевыми. Дальше сравниваются старые и новые данные, и перерисовка, если не равны
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Я просто думаю: что если на датаскрипт повесить listener, который просто складывает новую базу в базу ре-фрейма.
источник

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
Можно и так наверно но тогда все данные дублируются. Если данных не много то наверно не страшно
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Получается одна база в атоме conn, а вторая в базе ре-фрейма.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
но я плагаю, что в js, как и в джаве, данные не копируются целиком
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
попробовал такую схему: listenter дата-скрипта принимает tx-report и вызывает с ним событие, которое пишет репорт в базу рефрейма.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
и подписка, котороя находит в базе db-after и делает из него query. Если писать в базу что-то еще, то подписка тригерится, но из-за того, что данные приходят те же, повторный рендер не вызывается
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
т.е. если записать в базу просто левый ключ, то рендера не будет.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
т.е. идея работает, но как себя поведет на больших данных -- без понятия.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
а еще можно не перекладывать датаскрипт в базу рефейма, а написать коэффект, который подкладывает в контекст дереф conn
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Ivan Grishaev
а вообще, в реагенте в какой момент тригерятся подписки? Вроде бы пишут в доках, что на любое изменение в базе.
Триггерятся на любое изменение базы все подписки которые есть в текущей вьюхе
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
а что значит в текущей вьюхе?
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Ivan Grishaev
а что значит в текущей вьюхе?
Только те подписки которые задействованы в тех вьюхах которые сейчас на экране
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Если ты в данный момент вьюхутне рендеришь - ее подписки не дергаются
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Там с датаскриптом могут быть проблемы с подписками второго уровня
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Я пока плохо понимаю как они это в поше порешали
источник