站長資訊網
        最全最豐富的資訊網站

        react null報錯怎么辦

        react null報錯的解決辦法:1、打開相應的js文件;2、檢查元素是否已經渲染到DOM上;3、在useEffect鉤子中訪問ref,或者當事件觸發時再訪問ref即可。

        react null報錯怎么辦

        本教程操作環境:Windows10系統、react18.0.0版、Dell G3電腦。

        react null報錯怎么辦?

        React報錯之ref返回undefined或null

        當我們試圖在其對應的DOM元素被渲染之前訪問其current屬性時,React的ref通常會返回undefined或者null。為了解決該問題,可以在useEffect鉤子中訪問ref,或者當事件觸發時再訪問ref。

        import {useRef, useEffect} from 'react'; export default function App() {   const ref = useRef();   console.log(ref.current); // ?️ undefined here   useEffect(() => {     const el2 = ref.current;     console.log(el2); // ?️ element here   }, []);   return (     <div>       <div ref={ref}>         <h2>Hello</h2>       </div>     </div>   ); }
        登錄后復制

        useEffect

        useRef()鉤子可以傳遞一個初始值作為參數。該鉤子返回一個可變的ref對象,ref對象上的current屬性被初始化為傳遞的參數。

        我們沒有為useRef傳遞初始值,因此其current屬性設置為undefined。如果我們將null傳遞給鉤子,如果立即訪問其current屬性,將會得到null。

        需要注意的是,我們必須訪問ref對象上的current屬性,以此來訪問設置了ref屬性的div元素。

        當我們為元素傳遞ref屬性時,比如說,<div ref={myRef} /> ,React將ref對象的.current屬性設置為相應的DOM節點。

        我們使用useEffect鉤子,是因為我們想要確保ref已經設置在元素上,并且元素已經渲染到DOM上。

        如果我們嘗試在組件中直接訪問ref上的current屬性,我們會得到undefined,是因為 ref 還沒有被設置,而且 div 元素還沒有被渲染。

        事件

        你也可以在事件處理函數中訪問ref的current屬性。

        import {useRef, useEffect} from 'react'; export default function App() {   const ref = useRef();   console.log(ref.current); // ?️ undefined here   useEffect(() => {     const el2 = ref.current;     console.log(el2); // ?️ element here   }, []);   const handleClick = () => {     console.log(ref.current); // ?️ element here   };   return (     <div>       <div ref={ref}>         <h2>Hello</h2>       </div>       <button onClick={handleClick}>Click</button>     </div>   ); }
        登錄后復制

        當用戶點擊按鈕的時候,ref已經被設置好了,相應的元素已經被渲染到DOM中,所以我們能夠訪問它。

        總結

        可以在useEffect鉤子中訪問ref,或者當事件觸發時再訪問ref。也就是說,要確保元素已經渲染到DOM上。

        推薦學習:《react視頻教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 精品多毛少妇人妻AV免费久久| 精品一区二区三区在线成人| 精品国产一区二区三区久久蜜臀| 一本久久精品一区二区| 91久久精品电影| 精品国产乱码久久久久久郑州公司 | 无码日韩精品一区二区免费暖暖| 国产成人精品在线观看| 国产精品无码一区二区三级 | 精品国产AV一区二区三区| 日韩美女18网站久久精品| 成人免费精品网站在线观看影片 | 国产精品男男视频一区二区三区| 国产99视频精品免费专区| 人妻少妇精品视频一区二区三区| 久久久久一级精品亚洲国产成人综合AV区 | 日韩精品电影一区亚洲| 91精品日韩人妻无码久久不卡| 国产精品国产三级国产专播| 精品国产一区二区三区久久久狼 | 亚洲欧美日韩国产精品| 精品露脸国产偷人在视频 | 久久99精品国产麻豆不卡| 青草青草久热精品视频在线网站 | 国产精品自拍一区| 国产精品一区二区久久不卡| 无码人妻精品中文字幕| 亚洲性日韩精品一区二区三区| 精品中文高清欧美| 久久93精品国产91久久综合| 国产三级国产精品国产普男人| 亚洲国模精品一区| 国产精品天天看天天狠| 久久久久无码精品国产| 日本内射精品一区二区视频| 人妻精品久久久久中文字幕69 | 国产精品国色综合久久 | 日本一区二区三区精品中文字幕| 国产精品爽爽va在线观看网站| 国产成人精品免费视频大全麻豆| 国产亚洲精品资源在线26u|