reactjs 我应该在服务器端还是客户端获取数据来填充Next.js表单中的select元素?

t8e9dugd  于 2023-06-05  发布在  React
关注(0)|答案(1)|浏览(107)

我目前正在使用Next 13开发一个Web系统,在那里我需要填充一个选择元素,我对一个“问题”想得太多。
我必须填充我的选择与一些数据来自我的数据库,但这个选择是在我的形式,是客户端(不能是服务器组件)。
我的问题是,我应该在服务器端获取数据并将其作为 prop 传递给我的组件,还是只在客户端获取数据。
此表单用于两个路由,即 "/new”"/edit”。在服务器端获取的问题是,我需要在两个不同的页面上获取相同的数据,我不知道这样做是否正确

odopli94

odopli941#

当涉及到在使用Next.js开发的Web系统中填充select元素时,您有两个选项来获取数据。让我们讨论一下每种方法的优缺点:
1-在服务器端获取数据并将其作为prop传递:
优点:

  • 数据在服务器端获取和处理,减少了客户端的工作量。
  • 数据可以跨多个页面或组件共享,从而确保一致性。
  • SEO的好处是填充的选择元素包含在初始HTML响应中。

缺点:

  • 如果“/new”和“/edit”路由的数据相同,则在服务器端获取数据可能会导致冗余请求。
  • 如果数据是动态的并且经常更改,那么服务器端提取可能不是最佳选择。

2-在客户端获取数据:
优点:

  • 如果“/new”和“/edit”路由的数据相同,则避免冗余请求。
  • 允许更动态的更新,避免缓存陈旧数据。

缺点:

  • 数据提取和处理将在客户端完成,这可能需要额外的时间和资源。
  • 如果填充的选择元素依赖于客户端呈现,则SEO可能会受到影响。

考虑到您的具体情况,需要为“/new”和“/edit”路由获取相同的数据,您可以选择客户端获取以避免冗余请求。你可以获取数据一次,并将其存储在共享状态管理解决方案中,如Redux,React Context或Next.js的内置状态管理。
或者,如果数据不经常更改,并且您更喜欢利用服务器端呈现的好处,您仍然可以在服务器端获取数据,但请确保实现适当的缓存机制以最大限度地减少冗余请求。

相关问题