Использование реактивной внешней библиотеки в проекте ClojureScript — Синтаксис

#react-native #clojurescript #reagent #clojurescript-javascript-interop

Вопрос:

Я пытаюсь использовать react-native-swipe-просмотр списка внутри clojurescript. Но у меня возникли некоторые проблемы с преобразованием документированного кода js в код cljs.

Документация:

 import { SwipeRow } from 'react-native-swipe-list-view';
<SwipeRow>
     <View>
     </View>
</SwipeRow>
 

Мой Код Cljs:

 (:require [react-native-swipe-list-view :as swipe_list])

(defn item[]
(
    [swipe_list/SwipeRow
    [:View]]
))
 

Онлайн-инструмент:

 (def SwipeRow (.-SwipeRow (js/require "react-native-swipe-list-view")))
(defn item[]
(
    [SwipeRow
    [:View]]
))
 

Ничего из вышеперечисленного не сработало. Я новичок в cljs. будет очень полезно, если кто-нибудь подскажет мне, как преобразовать приведенные выше строки js в cljs. Спасибо

Ответ №1:

Документы реагентов: Создание «Компонентов» реагентов из реагирующих компонентов

Здесь я собираюсь создать два компонента реагента, view и swipeRow. Я использую разные способы для обоих, чтобы показать два способа импорта библиотеки и создания компонентов. Вы можете использовать любой из них.

 ;; Importing Reagent and React Native
(ns type_name_server_here
  (:require [reagent.core :as reagent]
            ["react-native" :as rn]))


;; 1st Way: Importing SwipeRow
(def SwipeRowImport (.-SwipeRow (js/require "react-native-swipe-list-view")))
;; Converting it into Reagent Component
(def SwipeRow (reagent/adapt-react-class SwipeRowImport))

;; 2nd Way: Importing View from already imported react-native library and converting it into reagent component
(def view (reagent/adapt-react-class (.-View ^js rn)))

;; SwipeRow requires two children (Check out documentation)
(defn item[]
(
    [SwipeRow
    [view] [view]]
))
 

Если вы используете shadow-clj, вы можете использовать эту таблицу в качестве справочной для преобразования отчетов об импорте ES6 в CLJ, которые требуются