Qwik技术问询:如何在routeLoader$()中访问URL参数?
在routeLoader$中获取URL参数的正确方式
你不能在routeLoader$()里使用useLocation(),因为useLocation()是客户端React Hook,仅能在React组件或客户端Hook上下文里调用;而routeLoader$()属于服务器/通用环境的加载器,运行时无法访问这类客户端Hook,这就是代码失效的原因。
正确的实现方式是直接利用routeLoader$()传入的RequestEvent参数来获取路由参数:
export const useRouteLoader = routeLoader$( (requestEvent: RequestEvent) => { // 从requestEvent中直接读取路由参数 console.log(requestEvent.params); // 其他业务代码 } );
如果你的路由配置包含动态段(比如/posts/:postId),requestEvent.params会自动包含对应的键值对(例如{ postId: "456" })。
要是你需要获取URL中的查询参数(比如?category=tech这类),可以通过requestEvent.url解析:
export const useRouteLoader = routeLoader$( (requestEvent: RequestEvent) => { const searchParams = new URLSearchParams(requestEvent.url.search); console.log(searchParams.get('category')); // 输出"tech" // 其他业务代码 } );
内容的提问来源于stack exchange,提问作者Kristóf Göncző
相关产品推荐
相关产品推荐

