当前位置:首页 > 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 能够正确传递到内部的输入框。

react如何让输入框聚焦

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组件状态的方法 使用useState和useEffect钩子组合可以同步React组件的状态。useState用于声明状态变量,useEffect用于监听状态变化并执行副作用。 imp…

react如何发音

react如何发音

React的发音 React的正确发音为 /riˈækt/,类似于“ree-akt”。以下是详细说明: 发音分解 第一个音节“Ree”发音类似英文单词“see”中的“ee”音。…

react 如何获取dom

react 如何获取dom

获取 DOM 的方法 在 React 中,可以通过 useRef 或 createRef 来获取 DOM 节点。useRef 是函数组件中常用的方法,而 createRef 通常用于类组件。 使用…

react如何重写alert

react如何重写alert

重写 React 中的 alert 方法 在 React 中,直接使用原生 alert 会破坏用户体验,通常需要自定义弹窗组件替代。以下是实现方法: 使用自定义弹窗组件 创建可复用的弹窗组件,替代原…

react如何减少伤害

react如何减少伤害

减少 React 应用性能伤害的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行浅比较,避免不必要的重新渲染。类组件可以使用 PureC…

react如何启动6

react如何启动6

安装 Node.js 和 npm/yarn 确保系统中已安装 Node.js(建议版本 16 或更高)和 npm/yarn。可通过以下命令验证版本: node -v npm -v 创建 Reac…