Size: a a a

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

2020 June 17

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
Учитывая что, как заметил @spacegangster, вообще-то подписки не бесплатные немного варварство всё пихать в единый стейт
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
В особенности когда это штуки тип хинтов
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
За исключением тех случаев когда тебе надо держать в базе посмотрел ли пользователь уже этот хинт (чтобы более не показывать)
источник

A

Anton in Clojure — русскоговорящее сообщество
Tim Plotnikov
Идея идеей, но иногда нужно следовать здравому смыслу) Если у меня например какой-то локальный индикатор, почему бы его не хранить в реактовском стейте компонента?
удобно прокликать страницу сохранил  лог ивентов и стейт вот тебе и тесты готовые
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
Иван Федоров
для каких-то единичных компонент храню view-state локально (обычно поля ввода), чтобы не мучить сотни подписок сотнями событий, обновляю глобальный стейт на условный коммит (blur/timeout), хотя может я не очень прав тут.
для Лайтпада, где большая завязка на скролл, я думаю вынести часть стейта в отдельный р-атом, тк скролл событий может быть несколько десятков в секунду
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
Arseniy Lebedev
В особенности когда это штуки тип хинтов
++
источник

A

Anton in Clojure — русскоговорящее сообщество
Tim Plotnikov
Идея идеей, но иногда нужно следовать здравому смыслу) Если у меня например какой-то локальный индикатор, почему бы его не хранить в реактовском стейте компонента?
ну и в целом простая понятная конструкция: есть стейт к нему применяются последовательно ивенты
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
Anton
удобно прокликать страницу сохранил  лог ивентов и стейт вот тебе и тесты готовые
Нехорошо если удобство для тестов заметно влияет на перф продакшна
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
Ilshat Sultanov
На практике в сложном UI на мой взгляд лучше в глобальный стейт ложить с неймспейснутым ключом. При окончании запроса просто убираешь этот ключ. Также можно стейт сгруппировать по страницам приложения и при переходах на другие страницы очищать стейт. А то, что глобально для всех страниц хранить отдельно без страничной группировки
к namespaced-ключам очень сильно присоединяюсь, незаменимо для гигиены и роста приложения
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
Иван Федоров
к namespaced-ключам очень сильно присоединяюсь, незаменимо для гигиены и роста приложения
я ключи организовал не все по ns. Например, имена событий выглядят так :evt.page-1.btn-3/click, так же есть ns для эффектов и коэффектов
источник

IS

Ilshat Sultanov in Clojure — русскоговорящее сообщество
Иван Федоров
я ключи организовал не все по ns. Например, имена событий выглядят так :evt.page-1.btn-3/click, так же есть ns для эффектов и коэффектов
+1 аналогично 😁
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Arseniy Lebedev
Учитывая что, как заметил @spacegangster, вообще-то подписки не бесплатные немного варварство всё пихать в единый стейт
Так пересчитываются только активные. Количество подписок не влияет на перформанс
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
В смысле пересчитываются на рендер?
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Да
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Плюс они кешируются и дедуплицируются
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
Но до этого есть логика сравнивания стейтов чтобы понять что что-то изменилось
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
И потом дёрнуть активные подписки
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Arseniy Lebedev
Но до этого есть логика сравнивания стейтов чтобы понять что что-то изменилось
Нет. Сравниваются только подписки
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
У меня конечно нет полной уверенности в том как это реализовано
источник

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
Но я почему-то думаю что если изменения приносятся в общий стейт
источник