1

我正在尝试在 clojurescript中使用react-native-swipe-list-view 。但是我在转换 cljs 代码中记录的 js 代码时遇到了一些麻烦。

文件:

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,那将是一个很大的帮助。谢谢

4

1 回答 1

1

试剂文档从 React 组件创建试剂“组件”

在这里,我将创建两个试剂组件,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-cljs,您可以使用此作为参考,用于将 ES6 Import 语句转换为 CLJS Require

于 2021-08-06T19:28:34.473 回答