美文网首页
react中使用ref属性

react中使用ref属性

作者: 那颗星_fcaf | 来源:发表于2018-06-08 12:07 被阅读470次

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进行一些列操作。

相关文章

网友评论

      本文标题:react中使用ref属性

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