React中ref的使用

作者: SuperBinlin | 来源:发表于2017-06-15 18:07 被阅读3405次

在react中,一般情况下,数据通过props来交互,但是在某些情况下,仍需用到ref,在官网中是这样说的

In the typical React dataflow, props are the only way that parent components interact with their children. To modify a child, you re-render it with new props. However, there are a few cases where you need to imperatively modify a child outside of the typical dataflow. The child to be modified could be an instance of a React component, or it could be a DOM element. For both of these cases, React provides an escape hatch.

ref有两种使用方式

1.设置回调函数(官方推荐)
2.设置string

我们以实现input获取焦点为例,探索这俩种方式的使用方式

回调函数方式

class Demo extends React.Component{
  constructor(props) {
    super(props);
    this.state = {           
      isInputshow:false                       //控制input是否渲染
    }
  }

  inputRefcb(instance){
    if(instance) {                            //确保不为null
      instance.focus();                     
    }
  }

  render() {
   {
      this.state.isInputshow ? 
      <div>
        <input ref={this.inputRefcb} type="text" />
      </div>
      : null           
    }
  }
}

该回调有三种触发时机

  • 组件被渲染后 回调参数instance 为input的dom对象
  • 组件被卸载后 回调参数instance 为null,确保内存不被泄露
  • ref改变后

string方式

class Demo extends React.Component{
  constructor(props) {
    super(props);

    onFocus(){
     this.refs.inputRef.focus()
    }
  }
  render() {
    <div>
      <input ref="inputRef" type="text" />
    </div>
    <input type="button" value="Focus" onClick={this.onFocus} />
  }
}

通过this.refs.inputRef获取组件实例,并触发focus()方法

最后再引用官方的一句话:)

Don't Overuse Refs

相关文章

  • React学习笔记(三)

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

  • React 中 ref 的使用

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

  • React中ref的使用

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

  • React中ref的使用

    在react中,一般情况下,数据通过props来交互,但是在某些情况下,仍需用到ref,在官网中是这样说的 In ...

  • React 中 ref 的使用

    ref 是一个入口 允许您直接访问DOM元素或组件实例。使用ref的三大原则:1.可以在dom元素上面使用ref属...

  • 如何使用React Refs

    如何在React中利用ref以及ref转发,回调ref和HOC React Ref是有用的功能,可作为从父组件中引...

  • React Ref使用

    如何通过refs获得对应的DOM? 使用时通过 this.refs.传入的字符串格式获取对应的元素,使用时 thi...

  • React Ref的使用

    React 支持一种非常特殊的属性 Ref ,你可以用来绑定到 render() 输出的任何组件上。这个特殊的属性...

  • react自定义组件中使用ref

    一、自定义组件使用ref并且透传子组件ref 自定义组件中使用ref需要用到react的2个hooks:1.for...

  • 组件ref的使用

    自己封装的组件,想使用ref,调用内部的方法1.使用React.forwardRef,包裹组件。 2.接收ref属...

网友评论

    本文标题:React中ref的使用

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