将数据放入Clojurescript试剂的表格中
我正在构建ClojureScript应用程序,但在使用试剂填充数据表时遇到了问题。我遇到的两个问题是大量的警告将数据放入Clojurescript试剂的表格中,clojure,clojurescript,reagent,Clojure,Clojurescript,Reagent,我正在构建ClojureScript应用程序,但在使用试剂填充数据表时遇到了问题。我遇到的两个问题是大量的警告 序列中的每个元素都应具有唯一的:键 而且,只要我调用执行渲染的函数,它就会正确渲染,然后我的整个页面冻结,重新加载页面是修复它的唯一方法。这是我的两项职能: (defn foo [] [:table (for [i (range 10)] [:tr (for [j (range 3)] [:td (str "Row " i ", Col
序列中的每个元素都应具有唯一的:键
而且,只要我调用执行渲染的函数,它就会正确渲染,然后我的整个页面冻结,重新加载页面是修复它的唯一方法。这是我的两项职能:
(defn foo
[]
[:table
(for [i (range 10)]
[:tr (for [j (range 3)]
[:td (str "Row " i ", Col " j)])])])
当我调用以下命令时,我得到警告,页面冻结,尽管它确实正确呈现:
(reagent/render [foo] (dom/getElement "results"))
我是否以错误的方式填写数据?有更简单的方法吗?您收到的警告是因为试剂需要为沿这些线创建的动态元素提供唯一的键值。有几种方法可以解决这个问题。您需要注意的另一件事是使用for可能会出现问题,因为它会生成惰性序列。虽然这在这种情况下对您有效,但它可能会在重新渲染时产生微妙的问题 我的建议是创建一个函数来渲染td元素,并在渲染之前加上前缀
^{:key (str i j)} [:td (str "Row " i ", Col " j)]
(str i j)将为每个td元素创建一个唯一的键。我发现另一件有用的事情是用于
(into [:tr]
(for [j (range 3)]
^{:key (str i j)} [:td ....])))
我一直在用试剂开发自己的应用程序。这不是很好的代码,它仍然需要大量的重新分解,但我已经完成了这样的表以及分页表和一些其他试剂组件,如选项卡、边栏菜单等。它可以在那里找到,如果没有其他内容,它应该会给你一些想法
还有一些关于试剂及其渲染方式的良好文档,以及一些微妙的“陷阱”您得到的警告是由于试剂需要为沿这些线创建的动态元素提供唯一的键值。有几种方法可以解决这个问题。您需要注意的另一件事是使用for可能会出现问题,因为它会生成惰性序列。虽然这在这种情况下对您有效,但它可能会在重新渲染时产生微妙的问题 我的建议是创建一个函数来渲染td元素,并在渲染之前加上前缀
^{:key (str i j)} [:td (str "Row " i ", Col " j)]
(str i j)将为每个td元素创建一个唯一的键。我发现另一件有用的事情是用于
(into [:tr]
(for [j (range 3)]
^{:key (str i j)} [:td ....])))
我一直在用试剂开发自己的应用程序。这不是很好的代码,它仍然需要大量的重新分解,但我已经完成了这样的表以及分页表和一些其他试剂组件,如选项卡、边栏菜单等。它可以在那里找到,如果没有其他内容,它应该会给你一些想法
此外,还有一些关于试剂及其渲染方式的良好文档,以及一些微妙的“陷阱”请看一看,以克服唯一的关键问题。请看一看,以克服唯一的关键问题。