当前位置:首页 > React

react的refs如何取值

2026-01-24 08:23:38React

获取 React Refs 的值

在 React 中,refs 用于直接访问 DOM 元素或 React 组件实例。根据 React 版本和使用方式的不同,获取 refs 值的方法也有所区别。

函数组件中使用 useRef

import React, { useRef } from 'react';

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

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

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

类组件中使用 createRef

import React, { Component } from 'react';

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

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

  render() {
    return (
      <div>
        <input ref={this.inputRef} type="text" />
        <button onClick={this.handleClick}>Get Value</button>
      </div>
    );
  }
}

回调 Refs(适用于旧版 React)

class MyComponent extends Component {
  handleClick = () => {
    console.log(this.inputRef.value); // 获取输入框的值
  };

  render() {
    return (
      <div>
        <input ref={el => (this.inputRef = el)} type="text" />
        <button onClick={this.handleClick}>Get Value</button>
      </div>
    );
  }
}

访问自定义组件的 Refs

如果 ref 被附加到自定义类组件,ref.current 将指向该组件的实例,可以调用其方法或访问其状态:

class CustomInput extends Component {
  focus = () => {
    this.inputRef.focus();
  };

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

class Parent extends Component {
  componentRef = React.createRef();

  componentDidMount() {
    this.componentRef.current.focus(); // 调用子组件方法
  }

  render() {
    return <CustomInput ref={this.componentRef} />;
  }
}

注意事项

  • 函数组件默认不支持 ref,除非使用 forwardRef 转发。
  • 避免过度使用 refs,优先考虑 React 的数据流(props 和 state)。
  • ref.current 在组件挂载前为 null,需在 useEffectcomponentDidMount 中访问。

转发 Refs(forwardRef

若需在函数组件中暴露内部 DOM 节点的 ref

react的refs如何取值

const FancyInput = React.forwardRef((props, ref) => (
  <input ref={ref} className="fancy" />
));

function Parent() {
  const inputRef = useRef();

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

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

标签: reactrefs
分享给朋友:

相关文章

react native 如何

react native 如何

React Native 开发基础 React Native 是一个用于构建跨平台移动应用的框架,允许开发者使用 JavaScript 和 React 编写代码,同时生成原生 iOS 和 Androi…

如何选购react

如何选购react

选购 React 相关产品或服务的建议 React 是一个用于构建用户界面的 JavaScript 库,广泛应用于前端开发。以下是选购 React 相关产品(如课程、书籍、工具、组件库等)的参考方法:…

react如何验证

react如何验证

表单验证方法 在React中验证表单数据通常使用以下几种方式: 内置HTML5验证 利用HTML5原生表单验证属性如required、pattern等,结合form.noValidate属性禁用浏览…

如何同步react

如何同步react

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

typescript react 如何

typescript react 如何

TypeScript 与 React 结合使用的方法 在 React 项目中使用 TypeScript 可以提升代码的可维护性和类型安全性。以下是一些关键步骤和最佳实践: 安装 TypeScript…

react如何添加图片

react如何添加图片

在React中添加图片的方法 使用import导入本地图片 将图片文件放在项目目录中(如src/assets),通过import语句引入后作为src属性值: import logo from './…