react中input自动聚焦问题

Posted SunLemon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react中input自动聚焦问题相关的知识,希望对你有一定的参考价值。

input自动聚焦问题

在react中可以使用refs解决这个问题,首先看一下refs的使用场景:

(1)处理焦点、文本选择或媒体控制。

(2)触发强制动画。

(3)集成第三方 DOM 库。

使用refs解决input聚焦的问题有两种应用场景:

1、组件内部:

在input内部定义ref,当给 html 元素添加 ref 属性时,ref 回调接收了底层的 DOM 元素作为参数。例如,下面的代码使用 ref 回调来存储 DOM 节点的引用。

class CustomTextInput extends React.Component {
      constructor(props) {
        super(props);
        this.focus = this.focus.bind(this);
      }

      focus() {
        // 直接使用原生 API 使 text 输入框获得焦点
        this.textInput.focus();
      }

      render() {
        // 使用 `ref` 的回调将 text 输入框的 DOM 节点存储到 React
        // 实例上(比如 this.textInput)
        return (
          <div>
            <input type="text" ref={(input) => { this.textInput = input; }} />
            <input
              type="button"
              value="Focus the text input"
              onClick={this.focus}
            />
          </div>
        );
      }
    }

2、父子组件:

子组件内input定义为:

  import React from ‘react‘;

    class Input extends React.Component {
        constructor(props){
            super(props);
        };

        render() {
            return <input type="text" ref={this.props.inputRef}/>;
        }
    }

export default Input;

父组件调用方法:

<Input name="中文姓" id="surname" placeholder="与身份证一致" inputRef={el => this.surname = el}/>

componentDidMount() {
    this.surname.focus();
}

 

以上是关于react中input自动聚焦问题的主要内容,如果未能解决你的问题,请参考以下文章

vue中让input框自动聚焦

element-ui表单input输入框获取自动聚焦功能

element-ui表单input输入框获取自动聚焦功能

element-ui表单input输入框获取自动聚焦功能

如何在(Ionic + React.js App)中自动聚焦 IonInput/OtpInput 字段,我已经尝试了所有解决方案

Vue 回顾之指令(关于input自动聚焦的问题)