【问题标题】:Typecsript and NextJS how to check if "document" existsTypescript和Next JS如何检查“文档”是否存在
【发布时间】:2022-02-15 20:48:25
【问题描述】:

NextJS 在服务器端呈现部分代码。我可以处理。但是我需要检查是否设置了 cookie,在这里我遇到了问题。我试过了:

!!document && !!document.cookie

document !== undefined && !!document.cookie

每次我得到同样的错误:

ReferenceError: document is not defined

我只想说清楚,我不想只在客户端呈现组件。我唯一要检查的是document.cookie 是否已定义:)

感谢每一个能帮助我解决这个问题的答案


更新:

我接受了第一个答案,因为它是正确的。然而,我意识到我的方法是错误的,并通过明确检查文档类型来解决它:

typeof document !== 'undefined' && !!document.cookie

我想我还没有喝足够的咖啡,我错过了一些很明显的东西。

【问题讨论】:

  • 也许只是 document?.cookie(或者 !!document?.cookie,如果你真的想要 bool)

标签: javascript reactjs typescript next.js


【解决方案1】:

Next.js 使用预渲染,因此您应该将任何 document 的使用包装在 useEffect 挂钩中,因为 document 在服务器上不可用。这样,特定的代码只会在客户端执行。

https://nextjs.org/docs/migrating/from-create-react-app#safely-accessing-web-apis

【讨论】:

  • 这是一个很好的答案,我学到了一些新东西。但是,我在我的代码中发现了一个根本缺陷,这就是它不起作用的原因。我会尽快发布我的解决方案:)
猜你喜欢
  • 2021-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 2021-11-25
相关资源
最近更新 更多