您好,登錄后才能下訂單哦!
本篇內容介紹了“react null報錯如何解決”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
react null報錯的解決辦法:1、打開相應的js文件;2、檢查元素是否已經(jīng)渲染到DOM上;3、在useEffect鉤子中訪問ref,或者當事件觸發(fā)時再訪問ref即可。
React報錯之ref返回undefined或null
當我們試圖在其對應的DOM元素被渲染之前訪問其current屬性時,React的ref通常會返回undefined或者null。為了解決該問題,可以在useEffect鉤子中訪問ref,或者當事件觸發(fā)時再訪問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}>
<h3>Hello</h3>
</div>
</div>
);
}
useEffect
useRef()鉤子可以傳遞一個初始值作為參數(shù)。該鉤子返回一個可變的ref對象,ref對象上的current屬性被初始化為傳遞的參數(shù)。
我們沒有為useRef傳遞初始值,因此其current屬性設置為undefined。如果我們將null傳遞給鉤子,如果立即訪問其current屬性,將會得到null。
需要注意的是,我們必須訪問ref對象上的current屬性,以此來訪問設置了ref屬性的div元素。
當我們?yōu)樵貍鬟fref屬性時,比如說,<div ref={myRef} /> ,React將ref對象的.current屬性設置為相應的DOM節(jié)點。
我們使用useEffect鉤子,是因為我們想要確保ref已經(jīng)設置在元素上,并且元素已經(jīng)渲染到DOM上。
如果我們嘗試在組件中直接訪問ref上的current屬性,我們會得到undefined,是因為 ref 還沒有被設置,而且 div 元素還沒有被渲染。
事件
你也可以在事件處理函數(shù)中訪問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}>
<h3>Hello</h3>
</div>
<button onClick={handleClick}>Click</button>
</div>
);
}
當用戶點擊按鈕的時候,ref已經(jīng)被設置好了,相應的元素已經(jīng)被渲染到DOM中,所以我們能夠訪問它。
“react null報錯如何解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。