当前位置:首页 > React

react的refs如何取值

2026-03-10 16:33:07React

使用回调Ref获取值

在函数组件中,通过useRef钩子创建ref对象,并将其绑定到DOM元素或组件实例。ref对象的current属性会指向实际元素:

import { useRef } from 'react';

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

  const handleClick = () => {
    console.log(inputRef.current.value); // 获取输入框的值
  };

  return (
    <>
      <input ref={inputRef} type="text" />
      <button onClick={handleClick}>获取值</button>
    </>
  );
}

类组件中的字符串Ref(已废弃)

旧版React支持字符串ref,但现已不推荐使用。若在遗留代码中遇到,可通过this.refs访问:

class MyComponent extends React.Component {
  handleClick = () => {
    console.log(this.refs.myInput.value); // 通过this.refs访问
  };

  render() {
    return (
      <>
        <input ref="myInput" type="text" />
        <button onClick={this.handleClick}>获取值</button>
      </>
    );
  }
}

转发Ref获取子组件DOM

使用React.forwardRef将ref传递给子组件的特定DOM元素,适用于封装高阶组件时:

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

function ParentComponent() {
  const childRef = useRef(null);

  const handleClick = () => {
    console.log(childRef.current.value); // 获取子组件内部DOM的值
  };

  return (
    <>
      <ChildComponent ref={childRef} />
      <button onClick={handleClick}>获取子组件值</button>
    </>
  );
}

动态绑定多个Ref

通过ref回调函数动态管理多个DOM元素的引用,适用于列表项:

react的refs如何取值

function ListComponent() {
  const itemsRef = useRef({});

  const handleClick = (id) => {
    console.log(itemsRef.current[id].textContent); // 获取特定列表项内容
  };

  return (
    <ul>
      {['A', 'B', 'C'].map((item) => (
        <li
          key={item}
          ref={(el) => (itemsRef.current[item] = el)} // 动态绑定ref
          onClick={() => handleClick(item)}
        >
          {item}
        </li>
      ))}
    </ul>
  );
}

注意事项

  • 函数组件中useRef创建的ref在组件更新时不会重新初始化,类组件的createRef会在每次渲染时重新创建。
  • ref的current属性在组件卸载后会被自动设置为null,避免内存泄漏。
  • 避免在渲染期间直接修改ref.current,应在事件处理或副作用中操作。

标签: reactrefs
分享给朋友:

相关文章

react如何记忆

react如何记忆

React 记忆技术 在 React 中,记忆(Memoization)是一种优化技术,用于避免不必要的重新渲染或计算。React 提供了多种内置方法和第三方库来实现记忆功能。 useMemo Ho…

react 如何继承

react 如何继承

在React中,组件继承并非推荐的设计模式(官方更推崇组合优于继承),但技术上仍可通过以下方式实现类似效果: 使用ES6类继承 通过extends关键字继承父组件类,子组件可访问父组件的生命周期方法…

如何记忆react

如何记忆react

理解核心概念 React的核心概念包括组件、状态(state)、属性(props)、生命周期方法(类组件)和钩子(函数组件)。掌握这些基础概念是记忆React的关键。组件是React应用的构建块,分为…

react如何部署

react如何部署

部署 React 应用的常见方法 使用静态服务器部署 React 应用在构建后会生成静态文件,可以直接通过静态服务器部署。常用的静态服务器包括 Nginx、Apache 等。 运行构建命令生成静态文…

react如何查

react如何查

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

react如何卸载

react如何卸载

卸载 React 项目或依赖 如果需要完全卸载 React 项目或相关依赖,可以按照以下步骤操作: 删除项目文件夹 直接删除整个项目文件夹是最彻底的方式。确保已备份重要代码或配置文件。 卸载全局安…