首页 > 编程知识 正文

react的refs(react组件传值)

时间:2023-05-03 23:38:31 阅读:104728 作者:3336

React提供的ref属性表示为对组件真实实例的引用,实际上是ReactDOM.render()返回的组件实例;

ReactDOM.render()在呈现组件时返回组件实例;呈现dom元素时,返回具体的dom节点。Refs可以安装在组件或dom元素上;

挂在组件(由类声明的组件)上的引用表示对组件实例的引用。您不能在功能组件上使用ref属性,因为它们没有实例:当装载在dom元素上时,它们代表具体的dom元素节点。q: ref属性可以设置为回调函数React,它支持向任何组件添加特殊属性。ref属性接受回调函数,该函数在组件加载或卸载时立即执行。

当向HTML元素添加ref属性时,ref回调接收底层DOM元素作为参数。向组件添加ref属性时,ref回调将当前组件实例作为参数接收。当组件被卸载时,传入的nullref回调将在生命周期回调(如组件装载或组件更新)之前执行。问:当引用属性被添加到组件和H5标记时,此实例只能在当前组件中访问,但在父组件的引用中没有这样的引用,例如:

var Parent=react . createclass({ 0

render:函数(){ 0

返回(

div类名='父级'

Child ref='child'/

/div

)

},

componentDidMount(){ 0

console . log(this . refs . child);//访问安装在组件上的ref

console . log(this . refs . child . refs . update);//访问装载在dom元素上的引用

}

})

var Child=react . createclass({ 0

render:函数(){ 0

返回(

div ref=“测试”

A ref='update' update /a

/div

);

}

});

ReactDOM.render(

家长/,

document.getElementById('示例')

);

将ref a ref='update' update /a设置为h5元素后,可以获得其真实的domain update/a,为组件设置refChild ref='child'/后,可以获得组件的实例(上图中的Constructor)。

问:获取引用组件对应的dom节点。无论ref设置值是回调函数还是字符串,都可以在组件通过Reactdom.findDOMNode(ref)挂载后得到真实的DOM节点。

但是,当html元素使用ref时,ref本身引用了元素的实际dom节点,它不需要使用ReactDOM.findDOMNode(ref)来获取它。这种方法通常用于反应组件上的参考。

Q:Q:this . refs和ReactDOM.findDOMNode的区别

添加引用到Compennt得到Compennt实例,添加到原生HTML得到DOM;ReactDOM.findDOMNode,当参数为DOM时,返回值为DOM;当参数为组件时,它获取组件呈现方法中的dom。两者的主要区别在于,当ref绑定到组件时,this.refs获取组件实例,而ReactDOM.findDOMNode获取DOM节点。问:新版本的React不再建议我们使用引用字符串代替引用回调。

Child ref={child=this。_child=child}/

console . log(reaction DOM . find DOM node(这。_ child))作者:BubbleM

链接:https://www.jianshu.com/p/56ace3e7f565

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。