Size: a a a

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

2021 February 06

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
Если я правильно понял рефрейм и реагент – то здесь подписка случится только после монтажа компонента. Что должно обеспечить отсутствие лишних подписок.
Но в детали не вдавался.
источник

AU

Alexander Ushanov in Clojure — русскоговорящее сообщество
если я правильно понимаю, сейчас подписки дедуплицируются в любом случае и можно подписываться где хочешь
источник

AU

Alexander Ushanov in Clojure — русскоговорящее сообщество
источник

AU

Alexander Ushanov in Clojure — русскоговорящее сообщество
Но я про другое вообще, то что компоненты получаются уже не чистыми функциями и зависят от внешнего состояния. Тут мне видится можно только пытаться такое состояние стараться изолировать и передавать аргументами в другие компонентами, оставляя их чистыми, хотя читаемость от этого скорее наобарот пострадает
источник

AU

Alexander Ushanov in Clojure — русскоговорящее сообщество
вопрос скорее философский
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
Alexander Ushanov
если я правильно понимаю, сейчас подписки дедуплицируются в любом случае и можно подписываться где хочешь
вопрос. если создать подписку так


(def sub1 (rf/subscribe [:s1]))

(defn comp…)


но не дереференсить её.
она будет вычисляться?
я не уверен что нет. Хотя может и не будет.
Но если её положить в функу – уже “точно не должна”
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
Alexander Ushanov
Но я про другое вообще, то что компоненты получаются уже не чистыми функциями и зависят от внешнего состояния. Тут мне видится можно только пытаться такое состояние стараться изолировать и передавать аргументами в другие компонентами, оставляя их чистыми, хотя читаемость от этого скорее наобарот пострадает
так тоже живу
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
конечно, компонент без подписок СИЛЬНО легче тестировать и оформлять dev-card ему
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
буду рад каким-то указателям на нюансы ре-фрейма.
надо бы самому доку перечитать
источник

A

Aleksey @cheatex in Clojure — русскоговорящее сообщество
Alexander Ushanov
Но я про другое вообще, то что компоненты получаются уже не чистыми функциями и зависят от внешнего состояния. Тут мне видится можно только пытаться такое состояние стараться изолировать и передавать аргументами в другие компонентами, оставляя их чистыми, хотя читаемость от этого скорее наобарот пострадает
Они не зависят от внешнего состояния. Просто не все их входные параметры перечислены в сигнатуре.
источник
2021 February 07

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Alexander Ushanov
Господа, позвольте спросить. Вот у меня у одного возникает дискомфорт, когда я делаю рефреймовые подписки внутри компонентов? Выглядит это как-то не совсем функционально. Или это нормально и надо просто смириться?
Ну на не совсем функционально, но а) это вопрос удобства б) ты подписываешься на части некоего скоординированного убер-стейта а не какие-то случайные вещи, так что в каком-то смысле подписка аналогична прокидыванию стейта всего приложения и выковыриванию из него нужных данных вручную
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Просто более удобный вид
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Ну и кэширование на халяву из-за дедупликации
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Иван Федоров
конечно, компонент без подписок СИЛЬНО легче тестировать и оформлять dev-card ему
Ну почему. Пушнул в базу нужный стейт и проверяй.
источник

AC

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

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Как бы на чисто функциональных компонентах машинка не крутится потому что их оч неудобно писать, поэтому в любом случае будет либо инкапсулированый в компоненте стейт как в реагенте либо глобальный скоординированный убер-стейт. Я за второе.
источник

AC

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

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Кажется что рефрейм это революционная штука, но на самом деле до выхода ре-фрейма многие крупные реагент проекты содержали в себе самописную глючную наполовину готову версию рефрейма.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Сначала ты понимаешь что нужен глобальный стейт, потом ты понимаешь что надо как-то координировать апдейты в него, и что можно не таскать его через параметры и вот ты уже сидишь пишешь рефрейм.
источник

AU

Alexander Ushanov in Clojure — русскоговорящее сообщество
Ну вот мне понравилась мысль Алексея. Наверное действительно суть в том, что все параметры определены на момента входа в функцию и не меняются в процессе ее вычисления.
источник