如何使用 refs.x.getDOMNode.focus 设置 React-Bootstrap 输入字段的焦点

发布日期:2026-07-16 02:45:06   来源 : 杭州电子商务研究院    浏览量 :5
杭州电子商务研究院 发布日期:2026-07-16 02:45:06  
5

介绍

React Bootstrap 是一个流行的库,用于集成支持 React 的 Bootstrap 用户界面组件。表单是任何应用程序的标准组成部分,各种表单控件(如文本输入、下拉菜单、文件上传、单选按钮和复选框)都需要动态运行。但有时用户提交的表单会出现错误,例如缺少必填信息或值无效。将焦点放在输入控件上会突出显示出现错误的特定输入框。

在本指南中,您将学习如何使用refgetDOMNode()函数设置 React Bootstrap 输入控件上的焦点。

使用 refs.x.getDOMNode.focus 设置焦点

可以在<Form>控件内创建 React Bootstrap 输入控件,它是 React Bootstrap 库的一部分。

下一步是从 react-bootstrap 和 react-dom 导入所需的表单控件,如下所示。

      import ReactDOM from 'react-dom';
import { Form, Button } from "react-bootstrap";
    

现在,使用输入控件和按钮设置表单。

      render() {
    return (
      <div>
        <span>Simple bootstrap input focus</span>
        <div>
          <Form>
            <Form.Group controlId="myFormGroup">
              <Form.Label>Email id :</Form.Label>
              <Form.Control
                type="email"
                placeholder="Enter your email"
              />
            </Form.Group>
            <Button
              variant="primary"
              type="button"
            >
              FOCUS
            </Button>
          </Form>
        </div>
      </div>
    );
}
    

这是一个没有ref或按钮点击事件的基本表单。下一步是通过添加ref来更新表单控件,如下所示。

      <Form.Group controlId="formBasicEmail">
    <Form.Label>Email address</Form.Label>
    <Form.Control
        ref={c => (this.myInputRef = c)}
        type="email"
        placeholder="Enter email"
    />
</Form.Group>
    

表单控件中添加了一个名为ref 的属性,用于获取输入控件的引用。

添加ref后,接下来要添加按钮点击事件,如下所示。

      <Button
    variant="primary"
    onClick={this.setInputFocus}
    type="button"
    >
    FOCUS
</Button>
    

按钮点击事件是此演示中最重要的部分之一,因为一旦用户点击按钮,输入控件就会获得焦点。

      setInputFocus() {
    ReactDOM.findDOMNode(this.myInputRef).focus();
}
    

以下是您需要了解的一些重要内容。

ReactDOMReactDOM是用于将各种 DOM 元素的行为修改为组件的方法集合。

findDOMNodefindDOMNode有助于从 DOM 树访问特定的 DOM 节点,也可以用于访问来自该 DOM 节点的值。

focus()focus方法主要与文本元素一起使用。它允许您突出显示底层 HTML 元素。

以下是聚焦输入元素的完整代码。

      import React, { Component } from "react";
import ReactDOM from 'react-dom';
import { Form, Button } from "react-bootstrap";

class BootstrapInput extends Component {
  constructor() {
    super();
    this.setInputFocus = this.setInputFocus.bind(this);
  }

  setInputFocus() {
    ReactDOM.findDOMNode(this.myInputRef).focus();
  }

  render() {
    return (
      <div>
        <span>Simple bootstrap input focus</span>
        <hr />
        <div>
          <Form>
            <Form.Group controlId="formBasicEmail">
              <Form.Label>Email address</Form.Label>
              <Form.Control
                ref={c => (this.myInputRef = c)}
                type="email"
                placeholder="Enter email"
              />
            </Form.Group>
            <Button
              variant="primary"
              onClick={this.setInputFocus}
              type="button"
            >
              FOCUS
            </Button>
          </Form>
        </div>
      </div>
    );
  }
}

export default BootstrapInput;
    

不使用 findDOMNode 来聚焦输入

您已经学习了如何使用findDOMNode聚焦于 React Bootstrap 输入元素,但另外,也可以仅使用ref来实现。

访问 DOM 元素时有一个简单的变化,如下所示。

      setInputFocus() {
    this.myInputRef.focus();
}
    

focus ()方法直接使用ref即可使输入元素获得焦点。

注意findDOMNode()在严格模式下已被弃用,从现在开始只有ref才足以直接访问 DOM 节点。

结论

React 通过使用 react-dom 包支持 DOM 操作方法和属性,这使我们能够访问和操作 DOM 元素的行为。

在本指南中,您已经了解了两种聚焦输入元素的方法:一种是使用findDOMNode()focus(),另一种是仅使用元素ref。我希望本指南能帮助您访问 DOM 元素。

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据