- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Reagent/React 构建一个 Hello World 应用程序。我使用 :value
/:on-change
组合将输入与原子绑定(bind)。但是,当我键入时,输入仍然为空:
(defn new-user []
; Atom declared in an inner `let`.
(let [v (atom "")]
[:div
[:input {:type "text"
:value @v
:on-change (fn [evt]
(reset! v (-> evt .-target .-value)))
}]]))
(defn app [state]
[:div
[:p "State" (pr-str @app-state)]
[new-user]])
(r/render-component [app app-state]
(.-body js/document))
如果我将原子移出let
,它将起作用:
; Atom is now top-level.
(defonce v (atom ""))
(defn new-user []
[:div
[:input {:type "text"
:value @v
:on-change (fn [evt]
(reset! v (-> evt .-target .-value)))
}]])
是因为每次React重新渲染时都会重新声明v
吗?如果是这样,我该如何重构该代码,以便不必使用全局变量来保存 v
?
最佳答案
事实证明这非常简单 - “组件”函数可以返回的不是模板,而是返回模板的函数。这样,外部函数将只执行一次(我们可以将 let
放在那里),而内部函数将在每次重新渲染时执行:
(defn new-user []
(let [v (atom "")]
; The returned function will be called on every re-render.
(fn []
[:div
[:input {:type "text"
:value @v
:on-change (fn [evt]
(reset! v (-> evt .-target .-value)))}]])))
关于reactjs - 试剂输入未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28645103/
我正在尝试将初始焦点设置在输入元素上 (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
我是一名优秀的程序员,十分优秀!