clojure - :on-click 呈现为文本
问题描述
我的 ClojureScript 函数:
(defn node-function [node]
[:<>
[:div (node :name) {:on-click #(prn "hi")}]])
在 DOM 中呈现为 HTML 文本:
My Documents{:on-click #object[Function]}
:on-click
我的代码看起来与我在网上找到的示例完全相同。
为什么编译器认为这是文本而不是函数?
解决方案
我不确定您项目的其余部分是如何构建的,但看起来div
您尝试渲染的属性映射和内部 html 已被转置。
渲染模型以这种方式出现的原因是,试剂看到:div
向量的第一个孩子不是地图(它可能是一个字符串)并将所有剩余的孩子解释为div
html 中发出的预期附加孩子,将它们字符串化顺其自然。
您可能正在寻找一个更像这样定义的函数:
(defn node-function [node]
[:div {:on-click #(prn "hi")} (:name node)])
我删除了这个:<>
位,因为这里不需要它,因为div
这个组件中只有一个。
我将node
and转置:name
为更加零安全,并使名称的查找更清楚地成为查找。
推荐阅读
- c# - 调用现有控制器操作方法的作业执行
- android - 如何在 Android 中找到导致崩溃的级别
- javascript - Google Chrome 上 WebAudio API 的不同行为
- scala - 在 scala 中将 List[(Int,String)] 转换为 List[Int]
- web-services - 未连接时 Xamarin Get Webservices 崩溃
- javascript - 如何在轮播中获取具有活动类名的图像标签的 src 值?
- wordpress - 主页不会从 HTTP 重定向到 HTTPS 同一页面
- c# - 防止呈现桌面选择矩形
- python - 将对象传递给多个继承类的更好方法
- github - 如何阻止 GitHub 在 Markdown 中呈现表情符号?