【问题标题】:Clojure: #object[map] is not a function, but its type is a functionClojure:#object[map] 不是函数,但它的类型是函数
【发布时间】:2020-09-10 17:21:33
【问题描述】:

所以我正在尝试在 clojure 中实现 react final form array-field。我从用javascript编写的文档中查找example。我几乎明白了,但是当我尝试使用 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]

【问题讨论】:

  • 为什么不使用clojures map?或者run!强制它。
  • 我不是 cljs 专家,但我认为 (:map fields) 中的值与您调用 (.map fields ...) 时发生的事情完全无关。关键字查找与对象属性完全不同。

标签: clojurescript react-final-form


【解决方案1】:

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

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

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

(.. props -fields -map)

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

【讨论】:

    猜你喜欢
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 2023-02-06
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 2021-07-31
    相关资源
    最近更新 更多