React Hooks之useRef獲取元素示例詳解
什么是useRef Hook?
useRef就是createRef的Hook版本用來獲取元素, 只不過比createRef更強大一點
createRef只能獲取普通元素和類元素,并且只能獲取到類組件的實例對象,不能拿到函數(shù)式組件
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,結(jié)果如下:

createRef和useRef
useState和useRef區(qū)別:
useRef中保存的數(shù)據(jù), 除非手動修改, 否則永遠都不會發(fā)生變化
const age = useRef(18);
如果說useRef也可以保存數(shù)據(jù)的話那么為什么還要有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;總結(jié)
useRef可以獲取元素,可以保存數(shù)據(jù),和createRef的區(qū)別是可以保存數(shù)據(jù),和useState的區(qū)別是:useRef中保存的數(shù)據(jù), 除非手動修改, 否則永遠都不會發(fā)生變化
以上就是React Hooks之useRef獲取元素示例詳解的詳細內(nèi)容,更多關于React Hooks之useRef的資料請關注腳本之家其它相關文章!
- React中useRef hook的簡單用法
- React?Hooks的useState、useRef使用小結(jié)
- React?Hooks中?useRef和useImperativeHandle的使用方式
- react如何利用useRef、forwardRef、useImperativeHandle獲取并處理dom
- react中useRef的應用使用詳解
- 重新理解?React?useRef原理
- 教你react中如何理解usestate、useEffect副作用、useRef標識和useContext
- React中useRef的具體使用
- React組件設計過程之仿抖音訂單組件
- react如何使用useRef模仿抖音標題里面添加標簽內(nèi)容
相關文章
React路由參數(shù)傳遞與嵌套路由的實現(xiàn)詳細講解
這篇文章主要介紹了React路由參數(shù)傳遞與嵌套路由的實現(xiàn),嵌套路由原則是可以無限嵌套,但是必須要讓使用二級路由的一級路由匹配到,否則不顯示,需要的朋友可以參考一下2022-09-09
react中關于Context/Provider/Consumer傳參的使用
這篇文章主要介紹了react中關于Context/Provider/Consumer傳參的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09

