Как мне заставить devCards работать с повторным кадром?
Devcards стремится предоставить визуальный опыт REPL для ClojureScript. Они предлагают поддержку Реагенту и ОМ. Как я могу заставить devCards работать с повторным просмотром?
2 ответа
Это повторяющаяся проблема с перекадровкой и девкардом. Основная проблема - глобальные переменные в перефрейме (основной проблемой является db, но могут быть проблемы с обработчиками и подписками), которые не очень хорошо подходят для идеи рендеринга нескольких девкард на одной странице.
Одним из возможных решений является рендеринг каждой devcard внутри iframe. Каждая карта будет изолирована друг от друга, даже если они содержатся и визуально отображаются на одной странице. Это, вероятно, не самое эффективное решение, но оно работает: я реализовал его в своей ветке devcards, под iframe
филиал. У него есть пара примеров devcards с использованием re-frame
Даже при том, что это издано в clojars как [org.clojars.nberger/devcards "0.2.3-0-iframe"]
Требуется некоторая работа, чтобы обеспечить более дружественный способ создания девкард iframe и, возможно, макрос devcard, специфичный для повторного фрейма. Также могут быть некоторые шероховатые края пользовательского интерфейса для полировки. Но не стесняйтесь использовать его. Конечно, вклады и отзывы приветствуются.
Я приведу пример, чтобы показать, как его использовать:
(defcard-rg re-frame-component-initialize-db
"This is the same re-frame component, but now using
data-atom to initialize the db, rendered in an iframe:"
(fn [data-atom _]
(setup-example-1)
(re-frame/dispatch [:initialize-db @data-atom])
[re-frame-component-example])
{:guest-name "John"}
{:iframe true})
(пример основан на re-frame 0.7.x, но все должно работать одинаково с более новыми версиями, потому что механизм iframe безразличен к использованию re-frame или чего-либо еще)
Они говорят, что вы не можете на первой странице:
переформатирование остается в стадии разработки и не выполняется в двух отношениях - например, это не работает так, как хотелось бы с devcards