一.ref
ref挂载到组件上:是对组件实例的引用
ref挂载到Dom元素上:表示真正的dom元素
二.ref的使用方式
1.回调函数的形式:ref={this.refCom}或 ref={(instance)=>this.refName(组件名)=instance}
回调函数的参数是组件的实例,回调函数会在组件被挂载后立即执行,或是组件被卸载或组件的ref属性本身发生变化,回调也会被立即执行,但是后一种情况回调函数的参数为null,以防止内存泄漏。
2.字符串的形式:ref=‘string(组件名)’
可以通过this.refs.string(组件名)获取组件实例(**不推荐使用**)
3.获取ref的值
不管ref设置值是回调函数还是字符串,都可以通过ReactDOM.findDOMNode(ref)来获取组件挂载后真正的dom节点,获取的是一个实例对象,方法都在实例对象里面。可以通过[color=#f20257]实例对象.(方法名)[/color]的形式调用
三.ref的使用
- 在由状态组件中的使用:可以通过子组件的ref可以访问到子组件实例中的props、state、refs、实例方法(非继承而来的方法)等
2.在无状态组件中的使用:无状态组件是不会被实例化的
四.注意:
不要在组件的render方法中访问ref引用,render方法只是返回一个虚拟dom,这时组件不一定挂载到dom中或者render返回的虚拟dom不一定会更新到dom中。