当前位置:首页 > React

react如何让输入框聚焦

2026-01-25 20:05:24React

使用 ref 和 useRef 钩子

在 React 中,可以通过 useRef 钩子创建一个 ref 对象,并将其绑定到输入框的 ref 属性上。通过调用 ref 对象的 current.focus() 方法,可以让输入框获得焦点。

import React, { useRef, useEffect } from 'react';

function FocusInput() {
  const inputRef = useRef(null);

  useEffect(() => {
    inputRef.current.focus();
  }, []);

  return <input ref={inputRef} type="text" />;
}

在类组件中使用 createRef

如果是类组件,可以使用 React.createRef() 创建 ref,并在 componentDidMount 生命周期方法中调用 focus()

import React from 'react';

class FocusInput extends React.Component {
  constructor(props) {
    super(props);
    this.inputRef = React.createRef();
  }

  componentDidMount() {
    this.inputRef.current.focus();
  }

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

通过事件触发聚焦

可以通过按钮点击或其他事件触发输入框的聚焦。将 ref 绑定到输入框,并在事件处理函数中调用 focus()

import React, { useRef } from 'react';

function FocusInput() {
  const inputRef = useRef(null);

  const handleClick = () => {
    inputRef.current.focus();
  };

  return (
    <div>
      <input ref={inputRef} type="text" />
      <button onClick={handleClick}>Focus Input</button>
    </div>
  );
}

自动聚焦表单中的下一个输入框

在表单中,可以通过监听 onKeyDown 事件,在按下回车键时自动聚焦到下一个输入框。

import React, { useRef } from 'react';

function FormWithAutoFocus() {
  const input1Ref = useRef(null);
  const input2Ref = useRef(null);

  const handleKeyDown = (e, nextRef) => {
    if (e.key === 'Enter') {
      nextRef.current.focus();
    }
  };

  return (
    <div>
      <input
        ref={input1Ref}
        type="text"
        onKeyDown={(e) => handleKeyDown(e, input2Ref)}
      />
      <input ref={input2Ref} type="text" />
    </div>
  );
}

使用 forwardRef 传递 ref

如果需要将 ref 传递给自定义组件,可以使用 React.forwardRef 包装组件,确保 ref 能够正确传递到内部的输入框。

import React, { forwardRef, useRef, useEffect } from 'react';

const CustomInput = forwardRef((props, ref) => {
  return <input ref={ref} type="text" {...props} />;
});

function FocusInput() {
  const inputRef = useRef(null);

  useEffect(() => {
    inputRef.current.focus();
  }, []);

  return <CustomInput ref={inputRef} />;
}

react如何让输入框聚焦

标签: 输入框react
分享给朋友:

相关文章

react 如何执行

react 如何执行

安装 React 确保 Node.js 安装在本地环境中。通过以下命令创建新的 React 项目: npx create-react-app my-app 进入项目目录并启动开发服务器:…

react 如何引入jquery

react 如何引入jquery

引入 jQuery 到 React 项目 在 React 项目中引入 jQuery 可以通过多种方式实现,但需要注意 React 和 jQuery 操作 DOM 的方式可能冲突,因此建议仅在必要时使用…

如何改造react

如何改造react

改造 React 项目的关键方法 分析当前项目结构 通过评估现有组件、状态管理和依赖项,明确需要改进的部分。使用工具如 webpack-bundle-analyzer 识别性能瓶颈。 升级 Rea…

react如何衰减

react如何衰减

React 中的动画衰减效果实现 在 React 中实现衰减效果(如滚动衰减、拖动释放后的惯性滑动)通常需要结合物理动画原理或第三方动画库。以下是几种常见方法: 使用 CSS 动画和 @keyf…

react如何查

react如何查

React 查询方法 React 提供了多种查询 DOM 元素的方式,以下是几种常见的方法: 使用 ref 通过 useRef 钩子可以获取 DOM 节点的引用,适用于直接操作 DOM 的场景。…

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…