react null报错怎么办

导读 reactnull报错的解决办法:1、打开相应的js文件;2、检查元素是否已经渲染到DOM上;3、在.....

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中文网的其他相关文章!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。2023-01-23 09:00:28

猜你喜欢

最新文章