react null错误报告的解决方案:1。打开相应的js文件;2.检查元素是否渲染到DOM;3.访问useeffect钩ref,或者在事件触发时访问ref。
本教程的操作环境:Windows10系统、react18.0.0版、Dell G3电脑。
react null报错怎么办?
React报错的ref返回undefined或null
当我们试图在渲染相应的DOM元素之前访问其current属性时,Reactref通常会返回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 元素尚未渲染。
事件
您还可以在事件处理函数中访问refcurrent属性。
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视频教程》
以上就是react null详情请关注php中文网的其他相关文章!