我有一个 ClojureScript 组件:
(defn main-panel []
(def nodes (-> @(re-frame/subscribe [::subs/nodes])))
(defn list-nodes [node]
(prn (node :name)))
(reagent/create-class
{:component-did-mount
(fn []
(api-service/get-file-tree))
:reagent-render
(fn []
(doseq [node nodes]
(if (= (node :depth) 0)
(list-nodes node))))}))
它将字符串打印到控制台。
但是当我将第一个函数更改为:
(defn list-nodes [node]
[:<>
[:h1 (node :name)]])
我没有得到任何呈现的 HTML - 没有错误并且浏览器窗口保持空白。
如何更改它以呈现 html?
更新
针对以下答案,我已更改doseq
为for
. 现在的问题是我得到了错误Uncaught Invariant Violation: Objects are not valid as a React child
,如果你正在使用 React,这很好,因为你可以调试,但使用试剂,不是那么多。考虑以下。这个功能:
(defn node [nodes]
(prn (nodes :name)))
当被这个函数调用时:
:reagent-render
(fn []
(for [nodes all-nodes]
(if (= (nodes :depth) 0)
(do
(nodeComponent/node nodes)
))))
打印 5 个字符串。但是将调用的函数更改为:
(defn node [nodes]
[:h1 (nodes :name)])
导致此错误:Uncaught Invariant Violation: Objects are not valid as a React child
。
这个问题是否与我遇到的另一个问题有关?