React 中 ref 的使用
官方文档传送门
在类组件中使用 ref
1. React.createRef
class App extends React.Component {
constructor(props) {
super(props);
this.divRef = React.createRef();
}
componentDidMount() {
console.log(this.divRef.current);
}
render() {
return <div ref={this.divRef}>验证 createRef 的一个div标签</div>
}
}
2. 回调函数使用 ref
class App extends React.Component {
constructor(props) {
super(props);
this.divRef = React.createRef();
}
componentDidMount() {
console.log(this.divRef);
}
render() {
return <div ref={ref => { this.divRef = ref }}>验证 createRef (回调方式) 的一个div标签</div>
}
}
注意: 以上方法不能在函数组件中使用,因为函数组件没有实例。
在函数组件中使用 ref
1. React.useRef
const UseRefComponent = () => {
const divRef = React.useRef();
React.useEffect(() => {
console.log(divRef.current);
}, []);
return <div ref={divRef}>验证 useRef 的一个 div 标签</div>
}
2. React.forwardRef
export const App = () => {
const divRef = React.useRef();
React.useEffect(() => {
console.log(divRef.current);
}, []);
return <ForwardRefComponent ref={divRef} />
}
export const ForwardRefComponent = React.forwardRef((props, ref) => {
return <div ref={ref}>验证 forwardRef 的一个 div 标签</div>
})
3. React.useImperativeHandle
export const App = () => {
const divRef = React.useRef();
React.useEffect(() => {
console.log(divRef.current.clog());
}, []);
return <ForwardRefComponent ref={divRef} />
}
export const ForwardRefComponent = React.forwardRef((props, ref) => {
const divRef = React.useRef();
React.useImperativeHandle(ref, () => ({
clog: () => {
console.log(divRef.current);
}
}));
return <div ref={divRef}>验证 useImperativeHandle 的一个 div 标签</div>
})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构