我可以在 getStaticProps 中使用 UseEffect 钩子吗?

时间:2021-03-01 23:18:03

标签: reactjs react-hooks next.js use-effect getstaticprops

我有疑问..我可以在 getStaticProps 中使用 useEffect 吗?

我正在尝试在 getStaticProps 中运行一个函数......它有效......但我不知道这是否是推荐的做法。

  useEffect(() => {
    remarkBody()
  }, [body, blogPostCollection])

如果不是......运行它的最佳方式是什么?

2 个答案:

答案 0 :(得分:2)

useEffect 用于在客户端挂载组件以及特定变量发生变化时执行代码。

getStaticProps 在服务器端和构建时只运行一次。您可以将代码直接放在函数体中。

无论如何,如果你这样做,你会遇到这个错误:

<块引用>

错误:无效的挂钩调用。钩子只能在函数组件的主体内部调用。

答案 1 :(得分:1)

在 next.js 中的数据是在服务器上获取的。这是服务器端渲染的关键方面。服务器端渲染的主要目的是发送填充页面,因此浏览器爬虫可以分析响应页面,这有助于更好地为您的页面进行 seo。当客户端发出请求时,在发送响应之前,next.js 运行 getStaticProps 或 getServerSideProps。

但是 useEffect 在客户端运行。 useEffect 的目的是在组件挂载之前获取数据,以便您可以在组件内部使用该数据。