当用户导航时,我尝试将id
发送到下一页。
我有一个主页,在那里我正在获取一个数据数组,并使用.map
在一种基于卡片的UI中显示它。
现在,当用户单击卡时,他们将被导航到显示该卡的详细信息的下一页。
假设主页在这里-localhost:3000
用户点击ID为234
的卡片
它们将导航到下一页,如下所示:
下一页为as-localhost:3000/user/234
现在,我想显示ID为234的那张卡的信息。为此,我确实需要发出FETCH请求,例如FETCH(https://userdatabase/234
)
上面的234
肯定是一个动态id,我怎么才能让这个fetch
请求在每次点击新卡时都知道要更改这个id?或者换句话说,这个页面是如何“知道”卡的ID的?
现在,我正在使用一种变通办法,如下所示:
1.当用户在第二页时,URL如下:localhost:3000/user/386
1.在NextJS中使用useRouter
获取此id,如下所示:
import {useRouter} from 'next/router'
`const router = useRouter()`
fetch(`localhost:3000/user/${router?.query?.user})
我知道从URL获取id并进行新的任务根本不理想,这会导致第二页出现陈旧的缓存问题。
我如何以更好的方式解决这个问题?
非常感谢你的阅读。
2条答案
按热度按时间h6my8fg21#
您需要创建一个动态路由:Next.js Docs
针对您的情况,创建一个文件
pages/user/[id].js
1.客户端
使用此代码片断访问ID:
2.服务器端
您可以使用data fetching functions中的任何一个
用于SSR的代码片段:
有关作为上下文传递给数据获取函数的内容的更多信息:上下文参数
wsewodh22#
将
id
添加到useEffect()
的依赖项数组中。大致是这样的: