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();
}

 

posted @ 2018-05-10 17:48  SunLemon  阅读(11647)  评论(0编辑  收藏  举报