- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个默认隐藏但用户可以切换该状态的 html 元素列表(其中包括查询结果)。我在下面尝试了几种不同的方法作为玩具示例,但都无法正常工作。
这段代码正确地创建了三个按钮,它们正确地改变了 exps 状态,但从不隐藏内容。
(:require [reagent.core :as r] )
(def exps (r/atom [true true true]))
(defn like-component []
[:div
(for [ [i r] (map-indexed vector ["A" "B" "C"])]
[:div
[:button {:on-click #(swap! exps update-in [i] not)}]
(when (nth @exps i)
[:pre (str i r)])])])
(r/render [like-component]
(js/document.getElementById "app"))
另一方面,下面的代码只会创建一个元素,但它可以正常工作。
(defn expandable-view [e bool]
(let [expanded (r/atom bool)]
(fn []
[:li
[:div.expandable
[:div.header {:on-click #(swap! expanded not)}
"Click me to expand and collapse"]
(if @expanded
[:div.body (allow-html :pre e)])]])))
(defn like-component []
[:ul
(vec
(for [ e ["A" "B" "C"]]
(expandable-view e true ))) ])
(r/render [like-component]
(js/document.getElementById "app"))
编辑:可能相关: https://github.com/reagent-project/reagent/wiki/Beware-Event-Handlers-Returning-False
最佳答案
for
是惰性的,所以 reagent
无法告诉您在第一个代码片段中取消引用 exps
。
我们可以通过显式取消引用原子来解决它。
(defn like-component []
(apply str @exps) ;; because @exps is a vector, and reagent
;; treat vectors as hiccup component
;; we can't just put `@exps` here.
[:div
(for [ [i r] (map-indexed vector ["A" "B" "C"])]
[:div
[:button {:on-click #(swap! exps update-in [i] not)}]
(when (nth @exps i)
[:pre (str i r)])])])
或者只是将惰性序列包装在 doall
中。
(defn like-component []
[:div
(doall (for [ [i r] (map-indexed vector ["A" "B" "C"])]
[:div
[:button {:on-click #(swap! exps update-in [i] not)}]
(when (nth @exps i)
[:pre (str i r)])]))])
仅供引用,related discussions .
any idea why the second block I posted only creates one element?
向量是 Reagent 的特殊公民,它们被视为 hiccup/React 组件。
举个例子
(defn like-component []
[:ul
(doall
(for [ e ["A" "B" "C"]]
[expandable-view e true]))])
另请注意,我们正在使用 [expandable-view e true]
来正确构建试剂成分。有关更多信息,我强烈建议阅读 Using [] instead of ()和 Creating Reagent Components .
关于clojure - 试剂中的交互式列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32897947/
我正在尝试将初始焦点设置在输入元素上 (defn initial-focus-wrapper [element] (with-meta element {:component-did-mo
我有一个 html Canvas ,想在上面显示 Quil 草图。大多数 Quil 示例使用 defsketch 在静态 html 页面上定义的 Canvas 上进行绘制。我想在这个试剂组件中的 Ca
我有一个 html Canvas ,想在上面显示 Quil 草图。大多数 Quil 示例使用 defsketch 在静态 html 页面上定义的 Canvas 上进行绘制。我想在这个试剂组件中的 Ca
我正在尝试通过一个简单的绘图程序来掌握 clojurescript 中的试剂。 我正在寻找一个示例,说明如何使用 Reagi 以有原则的“FRP”风格访问鼠标位置。 . 在各种试剂示例中,我可以看到如
所以签名为component-will-receive-props就是这样: https://github.com/reagent-project/reagent/blob/master/src/re
我从 here 复制了一个两年前的要点.它现在与 Figwheel 一起工作,并使用更新版本的 Reagent/React。 我正在寻找一种通用方法来隔离出现在 Javascript 控制台中的此警告
如何将不同的 React 版本与 Reagent、Om、Rum、Quiescent 或 Brutha 一起使用? 最佳答案 self 回答,因为这个问题经常被问到: 首先,您必须告诉 Leininge
我是一名优秀的程序员,十分优秀!