createRef 是 React 上面的 API,React.createRef() 没有任何参数
class Text extends React.Component {
constructor (props){
super(props);
this.divRef = React.createRef();
}
render(){
return (
<div ref={this.divRef}></div>
)
}
}
通过 createRef 创建 ref 对象
通过元素的 ref 属性可以附加到 React 元素上
一般通过构造器中给 this 上的属性赋值一个 ref,方便整个组件使用
ref 只要传递 React 元素中,就可以利用 ref 的 current
属性访问到该真实 DOM 节点
ref 在 componentDidMount 和 componentDidUpdate 触发前更新
ref 有不同使用方式
- ref 在 HTML 元素,那么 current 是真实 DOM 节点
- ref 在 class 组件,那么 current 是组件的实例
- ref 在函数组件(没有实例)createRef 附加不到在组件上,就没办法使用
函数组件是使用 Hooks
useRef
来解决的function Test() {
const divRef = React.useRef(null);
React.useEffect(() => {
console.log(divRef);
}, [])
return (
<div ref={divRef}>Hello, Function Ref!!!</div>
)
}