美文网首页javascriptalreadyReact
react ref 获取dom的三种方式

react ref 获取dom的三种方式

作者: 暴躁程序员 | 来源:发表于2022-04-04 09:52 被阅读0次

方式一:字符串方式(不推荐)

  1. 通过 ref="自定义名称" 绑定
  2. 通过 this.refs.自定义名称 来获取 dom 元素
    注意: 必须在类组件中才可使用,不要在 react 严格模式下使用(会控制台报 Warning,但不会阻断程序),注释掉 <React.StrictMode>可解决
import React from "react";
class Component1 extends React.Component {
  render() {
    return (
      <div>
        <button
          onClick={() => {
            this.refs.content.innerHTML =
              this.refs.content.innerHTML === "白虎" ? "青龙" : "白虎";
          }}
        >
          点击
        </button>
        <div ref="content">青龙</div>
      </div>
    );
  }
}

function App() {
  return (
    <div>
      <Component1 />
    </div>
  );
}

export default App;

方式二:回调函数方式(推荐)

  1. 通过 ref={(el) => {this.自定义属性 = el} 绑定
  2. 通过 this.自定义属性 来获取 dom 元素
    注意:必须在类组件中才可使用
import React from "react";
class Component1 extends React.Component {
  render() {
    return (
      <div>
        <button
          onClick={() => {
            this.contentEl.innerHTML =
              this.contentEl.innerHTML === "白虎" ? "青龙" : "白虎";
          }}
        >
          点击
        </button>
        <div
          ref={(el) => {
            this.contentEl = el;
          }}
        >
          青龙
        </div>
      </div>
    );
  }
}

function App() {
  return (
    <div>
      <Component1 />
    </div>
  );
}

export default App;

方式三:React.createRef()(react v16 新提出)

  1. 通过 constructor 构造函数中创建,this.自定义属性名 = React.createRef()
  2. 通过 ref={this.自定义属性名} 绑定
  3. 通过 this.自定义属性名.current 来获取 dom 元素
    注意:必须在类组件中才可使用
import React from "react";
class Component1 extends React.Component {
  constructor(props) {
    super(props);
    this.contentEl = React.createRef();
  }
  render() {
    return (
      <div>
        React
        <button
          onClick={() => {
            this.contentEl.current.innerHTML =
              this.contentEl.current.innerHTML === "白虎" ? "青龙" : "白虎";
          }}
        >
          点击
        </button>
        <div ref={this.contentEl}>青龙</div>
      </div>
    );
  }
}

function App() {
  return (
    <div>
      <Component1 />
    </div>
  );
}

export default App;

相关文章

  • React获取DOM

    React获取DOM的方法简述 createRef 当 ref 属性在组件时,获取组件实例;当ref属性在dom时...

  • react中获取dom以及使用ref

    一、react中获取dom有以下提供三种方法: js 常规dom操作方式,通过id获取dom 2.react原生函...

  • React学习笔记(三)

    React中的 ref 的使用 ref是一个引用,在React中使用ref来直接获取DOM元素从而操作DOM Re...

  • react ref 获取dom的三种方式

    方式一:字符串方式(不推荐) 通过 ref="自定义名称" 绑定 通过 this.refs.自定义名称 来获取 d...

  • react源码3 - ref

    ref可以获取dom节点或者react元素的实例,一般有三种使用方法 1. string ref 使用方法就是在r...

  • React 如何使用ref

    1.ref = "字符串"获取DOM -- 不推荐使用 实际截图: 2. 对象的方式,React推荐的做法 实际截...

  • react ref获取真实dom

    之前一直用ref获取,没觉得有什么问题,但是获取封装的组件获取到的却是React对象,而不是dom元素。 ref获...

  • react-ref

    ref:react对真实dom的引用 ref在reactElement上 ref在react组件上

  • Vue中ref/$refs的基本用法

    ref 有三种用法: 1、ref加在普通的元素上,用this.$refs.(ref值) 获取到的是dom元素 2、...

  • Vue的$refs和$el的使用

    ref 有三种用法: 1、ref 加在普通的元素上,用this.$refs(ref值) 获取到的是dom元素。 2...

网友评论

    本文标题:react ref 获取dom的三种方式

    本文链接:https://www.haomeiwen.com/subject/vtatsrtx.html