• 技术文章 >web前端 >前端问答

    react null报错怎么办

    藏色散人藏色散人2023-01-19 14:43:34原创67

    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视频教程

    以上就是react null报错怎么办的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:React
    上一篇:react 怎么安装依赖 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • react安装依赖命令有哪些• react怎么实现图片选择• react native怎么更改版本• react 怎么安装依赖
    1/1

    PHP中文网