gpt4 book ai didi

clojurescript/reagent for function 不起作用

转载 作者:行者123 更新时间:2023-12-01 10:34:47 26 4
gpt4 key购买 nike

我最近为我的 clojurescript 项目使用了试剂和重新框架,但我遇到了一个问题:
所以我有 html 自定义标签

<question id="1"></question>
<question id="2"></question>

我想使用 cljs 将它们交换到我的试剂生成的 html 中作为函数
(defn mypanel []
[:p "Hi!"])

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

但它不起作用,我尝试在不使用 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))))

关于clojurescript/reagent for function 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37591808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com