Использование существующих компонентов cljs в проекте React? - PullRequest
0 голосов
/ 13 июня 2019

https://www.reddit.com/r/Clojure/comments/4el0xi/how_to_use_an_existing_reactjs_component_with/

Это существующий пост об использовании существующих компонентов ReactJS в проекте CLJS / Reagent. Я хочу сделать наоборот. У меня есть несколько компонентов CLJS, и я хотел бы собрать их в какую-то библиотеку пользовательского интерфейса, чтобы они могли использоваться разработчиками React. То есть, если у меня есть компонент кнопки CLJS, я бы хотел отобразить эту кнопку с помощью

Я прочитал это - https://shadow -cljs.github.io / docs / UsersGuide.html # target-node-library - подробно, но это не совсем работает. Я использую «: target: node-library», и я могу получить простые функции (например, которые возвращают строки / числа) для компиляции и работы в моем приложении и т. Д., Но это не работает для целых компонентов. Например, мой компонент кнопки cljs принимает:

defn button [props & children]

но когда я пытаюсь передать эти параметры (я вызываю {lib.button ({}, {})} в моем файле App.js), я получаю сообщения об ошибках типа «Не определен метод протокола IMap.-disisoc», потому что я пытаюсь передать объекты JS в функции только для CLJS. Не уверен, как решить эту проблему ..

Я могу объяснить больше об этом, если это поможет прояснить. Также было бы очень полезно, если бы у кого-то был демонстрационный демонстрационный проект или какие-либо ресурсы, на которые он мог бы связать меня.

1 Ответ

0 голосов
/ 23 июня 2019

У меня есть только несколько предложений:

  • Вы можете попытаться создать новый пример проекта для использования вашей библиотеки с lein new figwheel myproject и использовать взаимодействие с JavaScript для перехода на один шаг ближе к нативному способу использования вашей библиотеки JS.

  • Вы можете создать пространство имен интерфейса, которое может использовать объекты JS, и обернуть их в структуры данных Clojure для сортировки ошибок протокола, которые вы видите, например. функции, которые принимают параметр props и передают (js->clj props) остальной части кода внизу.

  • Для достоверного источника, проверьте документы Reagent, особенно это: http://reagent -project.github.io / docs / master / InteropWithReact.html # creation-реагировать-компоненты-от-реагента- компоненты

...