首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试剂:组分贴装

试剂:组分贴装
EN

Stack Overflow用户
提问于 2014-12-22 12:18:14
回答 3查看 4.8K关注 0票数 18

我试图把最初的焦点放在一个输入元素上

代码语言:javascript
复制
(defn initial-focus-wrapper [element]
  (with-meta element
    {:component-did-mount #(.focus (reagent/dom-node %))}))

(defn chat-input []
  (fn []
    [initial-focus-wrapper
      [:input {:type "text"}]]))

不过,这对我不管用。我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-24 12:21:32

正如sbensu所说,with-meta似乎只在试剂中起作用。这意味着它可以与identity一起使用来产生一个可重用的包装器。

代码语言:javascript
复制
(def initial-focus-wrapper 
  (with-meta identity
    {:component-did-mount #(.focus (reagent/dom-node %))}))

(defn chat-input []
  (fn []
    [initial-focus-wrapper
      [:input {:type "text"}]]))
票数 14
EN

Stack Overflow用户

发布于 2014-12-23 18:35:26

我认为with-meta应该把一个函数作为一个参数。从医生那里:

代码语言:javascript
复制
(def my-html (atom ""))

(defn plain-component []
  [:p "My html is " @my-html])

(def component-with-callback
  (with-meta plain-component
    {:component-did-mount
     (fn [this]
       (reset! my-html (.-innerHTML (reagent/dom-node this))))}))

所以你的代码应该是:

代码语言:javascript
复制
(defn initial-focus-wrapper [element]
  (with-meta element
    {:component-did-mount #(.focus (reagent/dom-node %))}))

(defn chat-input []
  [initial-focus-wrapper
    (fn []
      [:input {:type "text"}]]))
票数 5
EN

Stack Overflow用户

发布于 2019-11-29 00:38:10

在给定组件上设置焦点的另一种方法是使用“:auto true”属性:

代码语言:javascript
复制
(defn chat-input []
  [:input {:type "text" :auto-focus true}]])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27602592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档