首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AutoFocus在React中不起作用

AutoFocus在React中不起作用
EN

Stack Overflow用户
提问于 2018-03-24 16:00:49
回答 5查看 8.2K关注 0票数 6

我对autoFocus有个问题。它对我不起作用,但使用它:

代码语言:javascript
复制
<input onChange={this.handleName} value={this.state.name} placeholder="Name..." type="text" autoFocus />
EN

回答 5

Stack Overflow用户

发布于 2018-03-24 16:10:39

很可能是你正在做的其他事情导致它失败。在这个简单的示例中,它工作得很好:

代码语言:javascript
复制
const App = React.createClass({
  render() {
    return ( 
      <input
       placeholder = "Name..."
       type = "text"
       autoFocus 
      / >
    );
  }
});

ReactDOM.render( <
  App / > ,
  document.getElementById('root')
);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>


<div id="root"></div>

票数 3
EN

Stack Overflow用户

发布于 2020-11-29 09:46:53

这些对我来说都不起作用:

代码语言:javascript
复制
<input type="text" autoFocus        .../>
<input type="text" autoFocus={true} .../>
<input type="text" autoFocus="true" .../>
<input type="text" autoFocus="autofocus" .../>

…即使在每种情况下,web检查器都显示呈现了<input type="text" autofocus .../>

也许是因为this phenomenon,我不确定:

如果您将React组件呈现为分离的元素,React将过早地调用focus()。当您的React树被添加到DOM中时,这将导致input不聚焦。

这个为我做了工作:

代码语言:javascript
复制
import React, { useRef, useEffect } from "react";

export default function SignIn() {
  const inputElement = useRef(null);
  useEffect(() => {
    if (inputElement.current) {
      inputElement.current.focus();
    }
  }, []);

  return (
    <div>
        <form action="...">
            <input
                  ref={inputElement} // yes, this is working in Chrome on Mac 
                  type="text" // allows username also; type 'email' woud insist on '@' sign
                  name="email"
                  placeholder="Email address"
                  autoComplete="email"
                  required
                  ...
                />
        </form>
    </div>
  );
}

这是Daniel Johnson的第二个策略

票数 2
EN

Stack Overflow用户

发布于 2020-10-14 09:23:00

我有两个应用了autoFocus的输入,一个有效,另一个无效,它们都是reactstrap输入域:

代码语言:javascript
复制
import { Button, Input } from 'reactstrap';

我发现其中一个只有一个类型,没有名称,这就是工作的那个。因此,我将另一个更改为相同的,它开始工作:

代码语言:javascript
复制
      <Input
        autoFocus="autofocus"
        id="code"
        type="text"
        value={props.codeValue}
        onChange={props.onCodeChange}
        onKeyPress={event => {
          if (event.key === 'Enter') {
            confirmCode();
          }
        }}
      />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49462561

复制
相关文章

相似问题

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