2017-02-20 7 views

ответ

0

Насколько я теперь понимаю, это не поддерживается непосредственно om.next, так как defui не ведет себя так же, как defrecord.

Один из способов (используемый распутыванием) заключается в том, чтобы поставить реализацию протокола в данные meta. Разговор с Тони Кэй:

tony.kay [6:02 PM] Так defui в CLJ земли добавляет «Протокол» вещи метаданных Секундочку ... https://github.com/untangled-web/untangled-client/blob/0b2fdfec1f0dde2d1d95b5a4d092131ca6fdc8f4/src/untangled/client/core.cljc#L90-L96 поэтому нам нужны такие функции, как get-initial-state. Мы можем назвать протоколом в cljs, но не в clj, потому что js разрешает его макрос взломать их на место. Компоненты Om должны быть запасом. Реагировать компонентов для взаимодействия, поэтому мы фактически не используем протоколы per-se, просто эмулируйте синтаксис, это часть работы по очистке, которая нам нужна , чтобы расчесывать во многих наших документах/руководстве для рендеринга на стороне. Вы не может, например, позвонить initial-state в вашем UI и ожидать CLJ-земли это нравится, но многие из наших примеров были написаны до того, как существовали, и теперь технически неправильно, если вы хотите сделать рендеринг сс

Это также, как это делается внутри om.next для рендеринга на стороне сервера.

Это также можно увидеть в ом-CSS https://github.com/ladderlife/om-css/blob/dd19235dabca74db1669504fff941ff97abddcc4/src/main/om_css/core.cljc#L240-L242

К сожалению, так как они требуют подход перезапись defui они не составляют вместе очень хорошо.

+0

Om Следующая вещь метаданных для «статических» протоколов. Итак, если вы будете следовать модели «get-initial-state», она будет работать. JVM не поддерживает идею реализации интерфейса в экземпляре класса, который представляет ваш новый класс (что и является «статическим» типом в js). –