Fork me on GitHub
#clojure-russia
<
2016-09-11
>
misha10:09:54

депенденси старые же kappa

olegakbarov11:09:37

гайс, а кто-то писал декораторы для реакт компонентов на cljs?

olegakbarov11:09:01

(defn comp []
  [:div "im test comp"])

(defn decorate [comp]
 ;; access comp props and state here?
  comp)

;; markup: 
...
[(decorate comp]
…

olegakbarov11:09:24

не совсем понимаю как внутри decorate работать с comp

olegakbarov12:09:35

начинаю понимать, что вопрос глупый, потому что в cljs всё работает вообще не так 😖

misha16:09:47

задача какая?

olegakbarov18:09:17

в долгосрочной перспективе — хочу сделать нормальный drag-and-drop

olegakbarov18:09:26

и сейчас препарирую react-dnd

olegakbarov18:09:11

там dragSource и dropTarget это декораторы которые оборачивают компоненты и добавляют поведениеи тд

olegakbarov18:09:55

вот пытаюсь понять как это может выглядеть в cljs

misha18:09:56

@olegakbarov а чем ты работаешь с реактом?

olegakbarov18:09:12

ну пока с реагентом

misha18:09:54

лол, вспоминал-вспоминал и вспомнил, где у меня днд

olegakbarov18:09:07

пока вообще примеряюсь, благо обертки (reagent/rum) легкие достаточно

olegakbarov18:09:19

файлоаплоад?

misha18:09:10

там и ссылочка на оригинал

olegakbarov18:09:07

да, draggable-button я видал, но спасибо

misha18:09:13

но этот вроде для svg, может быть это "имеет значение"

olegakbarov18:09:42

ммм.. почему svg?

misha18:09:05

я вот эту штуку подхачивал: https://www.graphdracula.net/

misha18:09:43

"я его для свг использовал", может там (в моей копипасте) есть нюансы из-за этого, я не помню уже

misha18:09:36

но, как видишь, оно к реагенту не имеет отношения

olegakbarov18:09:05

угу, тут не используется html5 dnd-api

olegakbarov18:09:15

просто по mousemove всё делается

misha18:09:30

наверное для html надо не .-left/.-right, а css менять, но то мелочи

olegakbarov18:09:55

еще такой вопрос — правильно понимаю что в контексте core.async во фронтенде — это нормальная практика валить в канал много ивентов (типо mousemove)

misha18:09:59

declare - это чтоб cursive не подчеркивал kappa

misha18:09:23

мне когда-то @asolovyov посоветовал валить в канал не сырые ивенты, а "обработанные", а то, особенно в случае реакта, ивенты синтетические и мутабельные: ты его кладёшь в канал, а на выходе - пустышка

misha18:09:39

так что типа, если у тебя канал кликов на 1 кнопку, просто на ивент туда true пиши, или 1, что бы передать факт клика. либо из ивента экстра что-то доставай сразу и перепаковывай до канала

misha18:09:25

и "да", нормальная, хотя лучше конечно пораньше отсекать мусор всякий, я так думаю

olegakbarov18:09:29

спасибо, а что значит ивенты мутабельные? чет не соображу

olegakbarov18:09:40

и в догонку вопрос — когда google closure используешь ивенты же гугловые, так? есть ли какие-то подводные камни по части использования closure и реакта?

asolovyov18:09:29

реакт старается переиспользовать объекты

asolovyov18:09:40

чтоб типа не аллоцировать слишком много

asolovyov18:09:00

хотя не, в этом месте вообще как-то странно

asolovyov18:09:35

ммм.. короче, насколько я помню, объект каждого ивента, который приходит в твои хендлеры, на самом деле один и тот же объект

asolovyov18:09:44

ему просто меняют данные внутри

misha18:09:56

было такое, да

asolovyov18:09:00

ну и после того как ивент случился, а другого нет - этот объект очищается

misha18:09:51

не знаю про closure и react

misha19:09:55

@olegakbarov можешь попробовать в дев-консольке хрома залогать ивент (так чтоб можно было стрелочки там пораскрывать, а не принтом обычным), посмотреть что у него там внутри, и другой потом залогать, а посмотреть снова в первый, не поменялось ли чего

olegakbarov19:09:47

да, надо поэкспериментировать, спасибо