欢迎访问KAIYUN官网,开云体育,开云体育app,开云体育app下载,开云体育官方下载,开云体育APP官方网站入口手机版下载为您提供体育最快速最全面最专业的体育新闻和赛事报道,主要有以下栏目:中国足球、国际足球、篮球、NBA、综合体育、奥运、F1、网球、高尔夫、棋牌、彩票、视频、图片、博客、体育微博、社区论坛!
开云·体育app(中国)官网入口-ios/安卓/手机APP下载

开云·体育app(中国)官网入口-ios/安卓/手机APP下载

欢迎访问开云体育手机app下载(KAIYUN)旗下有开云体育app下载,开云体育官网入口,开云体育app下载官网,开云体育app官网入口手机版等业务,开云体育平台app安全靠谱官方版下载信誉高!

react null报错的解决办法:1、打开相应的js文件;2、检查元素是否已经渲染到DOM上;3、在useEffect钩子中访问ref,或者当事件触发时再访问ref即可。

本教程操作环境: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视频教程》

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注