clojurescript/功能试剂不';行不通

clojurescript/功能试剂不';行不通,clojure,clojurescript,reagent,re-frame,Clojure,Clojurescript,Reagent,Re Frame,我最近正在为我的clojurescript项目使用试剂和重新帧,我有一个问题: 所以我有html自定义标记 <question id="1"></question> <question id="2"></question> 但它不起作用,我尝试在不使用for函数的情况下测试它 (reagent/render [mypanel] (aget (.getElementsByTagName js/document "question") 0)

我最近正在为我的clojurescript项目使用试剂和重新帧,我有一个问题: 所以我有html自定义标记

<question id="1"></question>
<question id="2"></question>
但它不起作用,我尝试在不使用for函数的情况下测试它

(reagent/render [mypanel]
     (aget (.getElementsByTagName js/document "question") 0))
它只使用一个标签就可以正常工作

我不知道为什么for函数不起作用,或者试剂不起作用?有人有什么建议吗


这一点我很在行。

for
生成了一个惰性序列,这意味着在需要之前,评估序列的任何工作都不会完成。您不能使用惰性序列强制产生副作用,因为它们永远不会被计算(
render
就是这样一个地方)。要强制产生副作用,您可能应该将其替换为
doseq
。在您的情况下,
dotimes
可能会更好:

(let [q (.getElementsByTagName js/document "question")]
  (dotimes [i 2]
    ^{:keys i}
    (reagent/render [mypanel]
                  (aget (.getElementsByTagName js/document "question") i))))

另一种选择是强制为以下对象返回lazyseq:


成功了!我明白了,所以渲染有副作用!谢谢!
(let [q (.getElementsByTagName js/document "question")]
  (dotimes [i 2]
    ^{:keys i}
    (reagent/render [mypanel]
                  (aget (.getElementsByTagName js/document "question") i))))
 (doall (for [i (range 2)]....