Next.js 13:呈现动态侧边栏及其依赖内容区域的文件夹结构

xuo3flqw  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(155)

我在努力让自己的头脑清醒下一个。js 13文件夹结构下app/生成如下搜索流程:

  • 用户访问/search并在顶部的搜索框中输入搜索查询
  • URL更改为/search?q=my+query
  • 搜索框下的部分有一个拆分视图,显示:
  • 左边是一长串搜索结果,实现了无限滚动分页;默认情况下选择第一个结果(UI方面,它以某种方式突出显示)
  • 在右侧,显示所选搜索结果的详细信息;URL可以改变以反映所选择的结果,g. /search/result-slug?q=my+query

由于分页是客户端关心的问题,我知道我需要使用像SWR这样的客户端获取库。然而,理想情况下,我希望第一个结果由服务器呈现(i.即,在左侧边栏上示出的第一结果页面,该列表上的第一项被突出显示,并且其细节在右侧示出)。
我试图遵循app playground中的代码,但这种方法在这里似乎不起作用。布局不接受搜索参数,在这种情况下需要这些参数--不像存储库,布局中呈现的“结果”(类别)是由相同的API调用产生的。从布局中呈现客户端组件并使用useSearchParams意味着我将无法使用promise模式从服务器获取第一个页面。
因此,看起来我需要通过页面而不是布局来拉取左侧边栏上的列表,但我不确定如何使其与右侧的内容区域进行适当的交互。因此,虽然在我看来这个用例需要可组合性,但我不确定如何在文件夹结构中最好地实现它。
这里有没有一种惯用的解决方案,不需要同时放弃服务器端呈现?

lfapxunr

lfapxunr1#

我最终在app/search/page.js下创建了一个页面,因为布局在这里似乎没有优势。
page.js从DB中获取搜索结果的第一页和第一搜索结果的详细信息。它序列化这些信息,并通过网络将信息发送到显示拆分视图的客户端组件。
客户端组件用来自服务器的初始数据加载其缓存,并立即显示信息。它执行API调用以在需要时获取附加信息。

相关问题