Size: a a a

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

2020 October 25

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Anton Chikin
У нас есть довольно сложные подписки, которые используют другие подписки - такие штуки довольно сложно отслеживать. Проще всего было бы просто переиспользовать такую подписку внутни эвента
Всё равно, если нормально организовано, то прокинуть через аргументы реально
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Всё равно, если нормально организовано, то прокинуть через аргументы реально
Нормально в данном контексте - это заранее выносить в отдельные функции все содержимое подписок т.е. куча дублирования
источник

AC

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

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Не догоняю откуда дублирование, но пофиг. Чего два?
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Не догоняю откуда дублирование, но пофиг. Чего два?
Ты теперь каждую подписку вынужден продублировать в виде функции
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Anton Chikin
Ты теперь каждую подписку вынужден продублировать в виде функции
Зачем?..
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
А как ты иначе “прокинешь через аргументы”?
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
У подписок есть аргументы, но мы же прокидываем не в подписку, а подписку в эвент
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
(defn some-data1 [db])
(defn some-data2 [db])
(defn some-flag [db])

(defn some-complex [[data1 data2 flag]]
 (if flag data1 data2))

(defn some-complex-transformed [data]
 (-> transform data))

(reg-sub
 ::some-data-1
 some-data1)

(reg-sub
 ::some-data-2
 some-data-2)

(reg-sub
 ::some-flag
 some-flag)

(reg-sub
 ::some-complex-sub
 :<- [::some-data-1]
 :<- [::some-data-2]
 :<- [::some-flag]
 some-complex)

(reg-sub
 ::some-complex-sub-transformed
 :<- [::some-complex-sub]
 some-complex-transformed)

(reg-event-fx
 ::event
 (fn [{db :db}]
   (let [complex-data-transformed (->> db
                                       ((juxt some-data1 some-data2 flag))
                                       some-complex
                                       some-complex-transformed)])))
источник

AC

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

AC

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

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Anton Chikin
Ты будешь придумывать на каждую подписку по 2 имени - одно кейворд для подписки, второе - имя функции
Нет.  Я говорю тебе прокидывать после сабскрайба в диспатч результат подписки как аргументы
источник

AC

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

AC

Anton Chikin in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Нет.  Я говорю тебе прокидывать после сабскрайба в диспатч результат подписки как аргументы
Нельзя в эвенте делать subscribe
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Anton Chikin
Нельзя в эвенте делать subscribe
Откуда ты эвент вызываешь?
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
И по-моему в эвенте можно делать сабскрайб. Но я не об этом сейчас
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Откуда ты эвент вызываешь?
Ты вызываешь эвент откуда-то со страницы. А на странице ты сабскрайбишься на подписки
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Ты вызываешь эвент откуда-то со страницы. А на странице ты сабскрайбишься на подписки
Хм, т.е. ты вынужден гонять данные в UI просто чтобы передать их в эвент, которому они и так доступны через db?
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Anton Chikin
Хм, т.е. ты вынужден гонять данные в UI просто чтобы передать их в эвент, которому они и так доступны через db?
Да
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Я гоняю и норм код получается
источник