react中使用ref属性

react提供ref属性,主要是为了对组件真正实例的引用,其实是ReactDOM.render()返回的组件实例;需要区分一下,ReactDOM.render()渲染组件时返回的是组件实例;而渲染dom元素时,返回是具体的dom节点。

挂载到组件(有状态组件)上的ref,表示对组件实例的引用;而挂载到dom元素上的ref,表示对具体的dom元素节点的引用。

ref的值可以设置为字符串,也可以设置为回调函数。

但是字符串的方式不推荐使用,或者在未来的react版本中不会再支持该方式,推荐使用回调函数的形式。

这个函数的执行时机是:

    1. 组件被挂载后,回调函数会立即执行,回调函数的参数为该组件的具体实例;

    2. 组件卸载或者原来的ref属性本身发生变化的时候,回调函数也会被立即执行,此时回调函数参数为null,以确保内存不泄漏。


class AudioPlay extends React.Component {

      constructor() {

            super();

            this.timeline = null;

            this.playhead = null;

            this.state = {......};

       }

        ......

        render () {

                return(

                   ...

                    <div ref={node => (this.timeline = node)} />

                    <div ref={node => (this.playhead = node)} />

                    ...

                )

        }

}


此段代码中,ref的回调函数中,参数node为div这个dom,渲染完毕后,这个实例将被保存在组件的this.timeline和this.playhead中,使用的时候可以直接使用this.timeline和this.playhead进行一些列操作。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 3. JSX JSX是对JavaScript语言的一个扩展语法, 用于生产React“元素”,建议在描述UI的时候...
    pixels阅读 2,891评论 0 24
  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 2,860评论 1 18
  • 以下内容是我在学习和研究React时,对React的特性、重点和注意事项的提取、精练和总结,可以做为React特性...
    科研者阅读 8,297评论 2 21
  • 深入JSX date:20170412笔记原文其实JSX是React.createElement(componen...
    gaoer1938阅读 8,107评论 2 35
  • It's a common pattern in React to wrap a component in an ...
    jplyue阅读 3,312评论 0 2