clojurescript/功能试剂不';行不通
我最近正在为我的clojurescript项目使用试剂和重新帧,我有一个问题: 所以我有html自定义标记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)
<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)]....