React Hooks之useRef获取元素示例详解
什么是useRef Hook?
useRef就是createRef的Hook版本用来获取元素, 只不过比createRef更强大一点
createRef只能获取普通元素和类元素,并且只能获取到类组件的实例对象,不能拿到函数式组件
import React, {createRef, useRef} from 'react';
class Home extends React.PureComponent{
render() {
return (
<div>Home</div>
)
}
}
function About() {
return (
<div>About</div>
)
}
function App() {
const pRef = createRef();
const homeRef = createRef();
function btnClick() {
console.log(pRef.current);
console.log(homeRef.current);
}
return (
<div>
<p ref={pRef}>我是段落</p>
<Home ref={homeRef}/>
<About/>
<button onClick={()=>{btnClick()}}>获取</button>
</div>
)
}
export default App;import React, {createRef, useRef} from 'react';
class Home extends React.PureComponent{
render() {
return (
<div>Home</div>
)
}
}
function About() {
return (
<div>About</div>
)
}
function App() {
// const pRef = createRef();
// const homeRef = createRef();
const pRef = useRef();
const homeRef = useRef();
function btnClick() {
console.log(pRef.current);
console.log(homeRef.current);
}
return (
<div>
<p ref={pRef}>我是段落</p>
<Home ref={homeRef}/>
<About/>
<button onClick={()=>{btnClick()}}>获取</button>
</div>
)
}
export default App;两种方法都能拿到ref,结果如下:

createRef和useRef
useState和useRef区别:
useRef中保存的数据, 除非手动修改, 否则永远都不会发生变化
const age = useRef(18);
如果说useRef也可以保存数据的话那么为什么还要有useState呢?
function App() {
const pRef = createRef();
const homeRef = useRef();
function btnClick() {
console.log(pRef); // {current: p}
console.log(homeRef); // {current: Home}
}
const [numState, setNumState] = useState(0);
// const age = useRef(18); // {current: 18}
const age = useRef(numState); // {current: 0}
useEffect(()=>{
age.current = numState;
}, [numState]);
return (
<div>
<p>上一次的值: {age.current}</p>
<p>当前的值 :{numState}</p>
<button onClick={()=>{setNumState(numState + 1)}}>增加</button>
</div>
)
}
export default App;总结
useRef可以获取元素,可以保存数据,和createRef的区别是可以保存数据,和useState的区别是:useRef中保存的数据, 除非手动修改, 否则永远都不会发生变化
以上就是React Hooks之useRef获取元素示例详解的详细内容,更多关于React Hooks之useRef的资料请关注脚本之家其它相关文章!
- React中useRef hook的简单用法
- React Hooks的useState、useRef使用小结
- React Hooks中 useRef和useImperativeHandle的使用方式
- react如何利用useRef、forwardRef、useImperativeHandle获取并处理dom
- react中useRef的应用使用详解
- 重新理解 React useRef原理
- 教你react中如何理解usestate、useEffect副作用、useRef标识和useContext
- React中useRef的具体使用
- React组件设计过程之仿抖音订单组件
- react如何使用useRef模仿抖音标题里面添加标签内容
相关文章
react中关于Context/Provider/Consumer传参的使用
这篇文章主要介绍了react中关于Context/Provider/Consumer传参的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-09-09


最新评论