React Hooks之useRef獲取元素示例詳解
什么是useRef Hook?
useRef
就是createRef
的Hook版本用來(lái)獲取元素, 只不過(guò)比createRef更強(qiáng)大一點(diǎn)
createRef只能獲取普通元素和類(lèi)元素,并且只能獲取到類(lèi)組件的實(shí)例對(duì)象,不能拿到函數(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ù), 除非手動(dòng)修改, 否則永遠(yuǎn)都不會(huì)發(fā)生變化
const age = useRef(18);
如果說(shuō)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>當(dāng)前的值 :{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ù), 除非手動(dòng)修改, 否則永遠(yuǎn)都不會(huì)發(fā)生變化
以上就是React Hooks之useRef獲取元素示例詳解的詳細(xì)內(nèi)容,更多關(guān)于React Hooks之useRef的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- React中useRef hook的簡(jiǎn)單用法
- React?Hooks的useState、useRef使用小結(jié)
- React?Hooks中?useRef和useImperativeHandle的使用方式
- react如何利用useRef、forwardRef、useImperativeHandle獲取并處理dom
- react中useRef的應(yīng)用使用詳解
- 重新理解?React?useRef原理
- 教你react中如何理解usestate、useEffect副作用、useRef標(biāo)識(shí)和useContext
- React中useRef的具體使用
- React組件設(shè)計(jì)過(guò)程之仿抖音訂單組件
- react如何使用useRef模仿抖音標(biāo)題里面添加標(biāo)簽內(nèi)容
相關(guān)文章
React路由參數(shù)傳遞與嵌套路由的實(shí)現(xiàn)詳細(xì)講解
這篇文章主要介紹了React路由參數(shù)傳遞與嵌套路由的實(shí)現(xiàn),嵌套路由原則是可以無(wú)限嵌套,但是必須要讓使用二級(jí)路由的一級(jí)路由匹配到,否則不顯示,需要的朋友可以參考一下2022-09-09聊聊jenkins部署vue/react項(xiàng)目的問(wèn)題
本文給大家介紹了jenkins部署vue/react項(xiàng)目的問(wèn)題,文末給大家提到了centOS安裝jenkins的腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-02-02react render的原理及觸發(fā)時(shí)機(jī)說(shuō)明
這篇文章主要介紹了react render的原理及觸發(fā)時(shí)機(jī)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02React實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)的方法
這篇文章主要為大家詳細(xì)介紹了React實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09react中關(guān)于Context/Provider/Consumer傳參的使用
這篇文章主要介紹了react中關(guān)于Context/Provider/Consumer傳參的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09React在定時(shí)器中無(wú)法獲取狀態(tài)最新值的問(wèn)題
這篇文章主要介紹了React在定時(shí)器中無(wú)法獲取狀態(tài)最新值的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08