面试题答案
一键面试配置嵌套路由
- 创建目录结构:
在Qwik项目中,按照路由结构创建相应的目录。在
src/routes
目录下,创建articles
目录,然后在articles
目录下创建[articleId]
目录(这里[articleId]
表示动态参数),再在[articleId]
目录下创建comments
目录,最后在comments
目录下创建[commentId].tsx
文件。这样的目录结构就对应了/articles/:articleId/comments/:commentId
的嵌套路由。 - 设置路由配置(通常无需额外配置,目录结构即路由配置): Qwik基于文件系统的路由机制,上述目录结构会自动映射为所需的嵌套路由。
参数传递与获取
- 父组件传递参数给子组件:
假设
articles/[articleId]/index.tsx
为文章详情页组件,它要将articleId
传递给comments/[commentId].tsx
组件。在articles/[articleId]/index.tsx
中,可以通过嵌套路由的链接来传递参数,例如:
import { useOutlet } from '@builder.io/qwik';
export default function ArticleDetails() {
const { articleId } = useParams();
return (
<div>
<h1>Article {articleId}</h1>
{/* 传递参数到子路由 */}
<a href={`/articles/${articleId}/comments/1`}>View Comment 1</a>
{useOutlet()}
</div>
);
}
- 子组件获取参数:
在
comments/[commentId].tsx
组件中,通过useParams
钩子来获取参数:
import { useParams } from '@builder.io/qwik';
export default function CommentDetails() {
const { articleId, commentId } = useParams();
return (
<div>
<h2>Comment {commentId} of Article {articleId}</h2>
</div>
);
}
这里useParams
钩子会从当前路由中提取出articleId
和commentId
参数,供组件使用。