美文网首页
react中获取dom以及使用ref

react中获取dom以及使用ref

作者: milletmi | 来源:发表于2019-09-27 18:21 被阅读0次

一、react中获取dom有以下提供三种方法:

  1. js 常规dom操作方式,通过id获取dom
const dom = document.getElementById('aaa');
const height = dom.offsetHeight;

2.react原生函数findDOMNode获取dom

const dom = document.getElementById('aaa');
 const height =  ReactDOM.findDOMNode(submitObj).offsetHeight

3.通过ref来定位一个组件,切记ref要全局唯一(类似id)

<div ref="module"></div>
const height = this.module.offsetHeight ;

ref Callback 属性
React支持一种非常特殊的属性,你可以附加到任何的组件上。 ref 属性可以是一个回调函数,这个回调函数会在组件被挂载后立即执行。被引用的组件会被作为参数传递,回调函数可以用立即使用这个组件,或者保存引用以后使用(或者二者皆是)。

<div ref={(c) => this.module = c}></div>
const height1 = this.module.offsetHeight ;

二、转发 Refs

Ref 转发是一种选择性加入的功能,可让某些组件接收他们收到的 ref,并将其向下传递(换句话说,“转发”)给孩子。
使用 React.forwardRef 来获取传递给它的 ref , 然后将其转发给它渲染的的 DOM button:

const FancyButton = React.forwardRef((props, ref) => (
  <button ref={ref} className="FancyButton">
    {props.children}
  </button>
));

// You can now get a ref directly to the DOM button:
const ref = React.createRef();
<FancyButton ref={ref}>Click me!</FancyButton>;

通过这种方式,使用 FancyButton 的组件可以获得底层 button DOM 节点的引用并在必要时访问它 - 就像他们直接使用 DOM button 一样。

以下是对上述示例中发生情况逐步的说明:

  1. 我们通过调用 React.createRef 创建一个 React ref 并将其分配给 ref 变量。
  2. 通过将 ref 变量传递给指定ref为 JSX 属性的 <FancyButton ref={ref}>
  3. Reac t将ref传递给 forwardRef 中的 (props, ref) => ... 函数作为第二个参数。
  4. 我们将这个ref参数转发到指定ref为 JSX 属性的 <button ref = {ref}>
  5. 当附加 ref 时,ref.current 将指向 <button> DOM节点。
    注意 第二个 ref 参数仅在使用 React.forwardRef 调用定义组件时才存在。常规函数或类组件不接收 ref 参数,而且 props 也不提供 ref 。 Ref 转发不限于 DOM 组件。您也可以将 refs 转发给类组件实例。

相关文章

  • React学习笔记(三)

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

  • react中获取dom以及使用ref

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

  • React获取DOM

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

  • Vue中ref属性获取DOM元素和组件引用

    ref获取DOM元素vue中获取DOM元素不建议用js直接操作DOM,使用ref可达到操作DOM的效果写法:thi...

  • React 中 ref 的使用

    ref是reference的简写,它是一个引用,在react中,我们使用ref来操作DOM。 在react中,我们...

  • React中ref的使用

    React中Ref是什么? ref是React提供的用来操纵React组件实例或者DOM元素的接口。 ref的作用...

  • react源码3 - ref

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

  • 7.Vue 操作dom

    Vue操作dom: 在Vue中获取dom,需要在dom上使用ref="名称",然后通过:this.$refs.名称...

  • React 如何使用ref

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

  • react ref获取真实dom

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

网友评论

      本文标题:react中获取dom以及使用ref

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