首页 > 解决方案 > :on-click 呈现为文本

问题描述

我的 ClojureScript 函数:

(defn node-function [node]
  [:<>
   [:div (node :name) {:on-click #(prn "hi")}]])

在 DOM 中呈现为 HTML 文本:

My Documents{:on-click #object[Function]}

:on-click我的代码看起来与我在网上找到的示例完全相同。

为什么编译器认为这是文本而不是函数?

标签: clojureclojurescriptreagent

解决方案


我不确定您项目的其余部分是如何构建的,但看起来div您尝试渲染的属性映射和内部 html 已被转置。

渲染模型以这种方式出现的原因是,试剂看到:div向量的第一个孩子不是地图(它可能是一个字符串)并将所有剩余的孩子解释为divhtml 中发出的预期附加孩子,将它们字符串化顺其自然。

您可能正在寻找一个更像这样定义的函数:

(defn node-function [node]
  [:div {:on-click #(prn "hi")} (:name node)])

我删除了这个:<>位,因为这里不需要它,因为div这个组件中只有一个。

我将nodeand转置:name为更加零安全,并使名称的查找更清楚地成为查找。


推荐阅读