如何在React路由中不通过URL传递id参数?附解决方案
问题描述
我想要做一个根据ID加载对应内容的页面,但页面URL不能包含这个ID。目前我用的路由是:
<Route path="/schedule/:url" element={<SchedulePage />} />
这个路由会生成类似 website.com/schedule/[自定义内容] 的URL。但现在的问题是,SchedulePage 需要展示通过ID获取的信息,我能想到的方法只有用路由参数,但不想把ID放到URL里。我试过把路由改成:
<Route path="/schedule/:url/:id?" element={<SchedulePage />} />
想实现不包含ID的访问,但完全没用。
解决方案
在STerliakov的帮助下,我找到了可行的解决办法:使用Mongoose的findOne()函数,创建一个用户自定义的唯一字符串,让它起到和_id一样的作用——作为查询单个对象的唯一标识。这样就可以通过这个自定义字符串(也就是路由里的:url参数)去数据库中查询对应的内容,不用把真实ID暴露在URL里了。
内容的提问来源于stack exchange,提问作者Stefan Lotz
相关产品推荐
相关产品推荐

