簡體   English   中英

在React項目中使用現有的cljs組件?

[英]Using existing cljs components in a React project?

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

現有這篇關於在CLJS / Reagent項目中使用現有ReactJS組件的帖子。 我正在尋找相反的事情。 我有一堆CLJS組件,並希望將它們編譯成某種類型的ui庫,以便React開發人員可以使用它們。 也就是說,如果我有一個按鈕CLJS組件,我希望能夠在React / js app文件中使用<Button />或mylib.Button(_)等來呈現該Button。

我已經閱讀了這篇文章 - https://shadow-cljs.github.io/docs/UsersGuide.html#target-node-library-但是它還沒有完成。 我一直在使用“:target:node-library”,我可以得到簡單的函數(例如返回字符串/數字)來編譯和在我的應用程序中工作等等。但它不適用於整個組件。 例如,我的cljs按鈕組件包含:

defn button [props & children]

但是當我嘗試傳遞這些參數(我在我的App.js文件中調用{lib.button({},{})}時,我得到的錯誤就像“沒有協議方法IMap.-dissoc defined”,因為我'我相信,我試圖將JS對象傳遞給僅限CLJS的函數。 不知道如何解決這個問題..

如果它有助於澄清,我可以解釋更多。 如果有人有參考演示項目或他們可以鏈接我的任何資源,這也將是非常有用的。

我只有一些建議:

  • 您可以嘗試使用lein new figwheel myproject構建一個新的示例項目來使用您的庫,並使用JavaScript interop一次移動一步,更接近使用庫的本機JS方式。

  • 您可以創建一個可以使用JS對象的接口命名空間,並將它們包裝到Clojure數據結構中,以便對您看到的協議錯誤進行排序,例如。 帶有props參數並向下傳遞(js->clj props)到下面代碼的其余部分的函數。

  • 對於權威來源,請檢查Reagent文檔,尤其是: http//reagent-project.github.io/docs/master/InteropWithReact.html#creating-react-components-from-reagent-components

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM