首页 > 解决方案 > Clojure:#object[map] 不是函数,但它的类型是函数

问题描述

所以我试图在clojure中实现反应最终形式的数组字段。我从用javascript编写的文档中查找示例。我几乎明白了,但是当我尝试使用 fields.map 时,它说 map 不是函数,即使它的类型是函数。
这是我的clojure代码。

(defn field-array [props]
  (fn [{:keys [name validate type]}]
    [:> FieldArray {:name name}
     (fn [props]
       (let [{:keys [fields]} (js->clj props :keywordize-keys true)]
         (print (:map fields))
         (.map fields (fn [k v] (print k)))))]))

这就是错误所说的

Uncaught TypeError: fields.map is not a function

当我打印(:地图字段)

#object[map]

标签: clojurescriptreact-final-form

解决方案


我设法找到了我自己问题的答案。由于某种原因,我似乎无法通过 clojurescript 调用 javascript 函数。因此,不要像这一行那样将 javascript 转换为 clojure。

let [{:keys [fields]} (js->clj props :keywordize-keys true)]

我必须像这样通过传递的道具直接调用javascript函数

(.. props -fields -map)

希望它能帮助像我这样在这个问题上苦苦挣扎的人。


推荐阅读