当前位置: 首页 > 知识库问答 >
问题:

试图设置窗口高度,但它给出了一个错误react.js[重复]

薛欣荣
2023-03-14

我使用useState获取窗口高度,但它给出了一个运行时错误,表示未定义窗口。你知道为什么吗

代码如下:

let [winHeight,setWinHeight] = useState(window.innerHeight)
useEffect(() => {
          const list = []
          for (var i=0;i<datas.length;i++){
               const t = datas[i].title
               const res = handleResize(i + 2)
               list.push(<li ref={resl[i + 1]} style={{top: "20px",left: res + "px"}}><Anchor href={datas[i].link || `/${t.replace(/ /g, "_")}`}><a onClick={() => closeNav()} onMouseOver={() => setHovering(i)}>{t}</a></Anchor></li>)
          }
          setWinHeight(window.innerHeight)
          setLinks(list)
     }, [winHeight])

共有3个答案

司空宗清
2023-03-14

在UseEffect的依赖项数组中使用[window.innerHeight]而不是[winHeight]

丰智
2023-03-14

试试这个:

let [winHeight,setWinHeight] = useState(0)

useEffect(()=> {
setWinHeight(window.innerHeight)
},[])

另外,您还需要从反应中导入use效应。

未定义窗口,因为组件在您尝试访问窗口对象时不是渲染器。

钮兴安
2023-03-14

您是否尝试过添加window.height到use效应的依赖数组中?

useEffect(() => {
      const list = []
      for (var i=0;i<datas.length;i++){
           const t = datas[i].title
           const res = handleResize(i + 2)
           list.push(<li ref={resl[i + 1]} style={{top: "20px",left: res + "px"}}><Anchor href={datas[i].link || `/${t.replace(/ /g, "_")}`}><a onClick={() => closeNav()} onMouseOver={() => setHovering(i)}>{t}</a></Anchor></li>)
      }
      setLinks(list)
 }, [window.innerHeight])
 类似资料:
  • 当我激活这个插件时,它会向我显示错误,我如何解决这个问题? 致命错误:未捕获错误:在C:\xampp\htdocs\www\real\wp content\plugins\realtyelite theme plugin\inc\vc函数中调用未定义的函数vc\u add\u shortcode\u param()。php:3堆栈跟踪:#0 C:\xampp\htdocs\www\real\wp

  • 我的IDE是Eclipse IDE 2020.03,使用由gradlew setDecompWorkspace和gradlew eclipse制作的Minecraft mods目录 我已经尝试将-vm目录更改为jdk 1.8.0和jre/bin/javaw.exe 错误显示:错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。 代码和eclipse。ini看起来像这样:

  • 我正在为MariaDB中的拆分字符串创建一个过程,但它给出了一个错误 “#1064-您的SQL语法有错误;请查看与您的MariaDB服务器版本相对应的手册,以了解使用近‘TRUNCATE TABLE的正确语法。”

  • 我试图设置一个渐变覆盖整个页面 这是我的代码: (我知道我写的最大高度:1%;,请继续阅读) 正如我所说,身高:100% 不起作用,所以我尝试使用各种输入,我看到的是,当我使用像素作为最大高度时,渐变的高度会发生变化,但无论我选择什么输入作为百分比的最大高度,渐变的高度都会保持不变,例如,在我的代码中,我使用了最大高度:1% 和渐变仍然超出了网页的高度。 我检查了开发工具,并应用了max heig

  • 问题内容: 我正在尝试从Java代码怪胎中为我的首选示例之一修复线程错误。 这是代码: RetrieveFeedTask: 做到无误的最佳方法是什么?当前正在显示Toast错误(?)。 问题答案: 您无法在中做任何事情。因此,您不能在那里显示一个。您需要将此移动到其他地方。可能 你可以调用,并显示在或到并显示它。您还可以选择将数据发送回方法 异步任务

  • 以下是相关错误及其显示: JAVAexe不是可识别为内部或外部命令、可操作或外部命令的文件 errorlevel=9009