我正在写一个Next.js 14 App Router应用程序。我想在react-map-gl
标记onClick
处理程序中显示一个“弹出”组件。“信息框”弹出内容需要根据所选标记进行更改,通过数据库查找。
React Server Components现在感觉是正确的方法,但它们只渲染一次。这可以通过使用revalidatePath
无效来规避,但这似乎会重新渲染整个页面。我不想重绘我的Map,只是'信息框'组件。
各种示例显示数据库更改,然后重新加载相同的数据(数据库中现在存在添加内容)。如果更改是在数据库表中,则可以工作,但如果我想更改数据库查询,则不行。
我想改变我在数据库中查询的内容(WHERE slug = input
子句),所以我需要将客户端状态的改变传递给服务器,这似乎是不可能的。
看起来我需要用Server Actions来代替。我是不是有点离谱?
1条答案
按热度按时间ql3eal8s1#
在React Labs:What We've Been Working On - March 2023中描述的reactjs/server-components-demo似乎做了我所追求的事情,但它似乎是通过将状态提升到
App
组件main/src/App.js之上来实现的:字符串
状态由server/api.server.js#L109提供:
型
我不确定这在标准的Next.js App路由器项目中是否可行。