这里介绍三种用法:回调形式、api形式、ref hooks
1、回调形式
使用回调会传递一个函数。这个函数中接受 React 组件实例或 HTML DOM 元素作为参数
import React, { useRef, Component } from 'react'
export default class Demo extends Component {
cli = () => {
//此时的handler就会被挂载到this上,即Demo组件的实例对象上
const { handler } = this
console.log(handler,111)
}
render() {
return (
<div>
<input ref={curNode=> this.handler = curNode} />
<button onClick={this.cli}>点击</button>
</div>
)
}
}
2、api形式
Refs 是使用 React.createRef() 创建的,并通过 ref 属性附加到 React 元素。在构造组件时,通常将 Refs 分配给实例属性,以便可以在整个组件中引用它们。
不过这种方式我是很少用,一般都是用hooks方式
class Demoextends React.Component {
constructor(props) {
super(props);
this.myRef = React.createRef();
}
render() {
return <div ref={this.myRef} />;
}
}
3、useRef hooks
import React, { useRef } from 'react'
export default function Demo() {
const tRefs = useRef()
const handleInputChange = (e) => {
console.log(tRefs)
}
return (
<div>
<input ref={tRefs} type="text" onChange={(e) => handleInputChange(e)} />
<button>点击</button>
</div>
)
}