面试题答案
一键面试- 实现思路:
- 在商品列表页面,当点击商品进入详情页时,通过在跳转链接中附加商品其他信息作为查询参数的方式传递数据。
- 在
ProductDetailPage
组件中,使用Qwik提供的路由相关函数来获取这些查询参数并展示数据。
- 关键代码:
- 商品列表页面:假设使用
@builder.io/qwik
库,且商品列表项渲染代码如下:
- 商品列表页面:假设使用
import { component$, useNavigate } from '@builder.io/qwik';
import type { Product } from './types';
export const ProductListItem = component$(({ product }: { product: Product }) => {
const navigate = useNavigate();
return (
<div onClick={() => {
navigate(`/product/${product.id}?name=${encodeURIComponent(product.name)}&price=${product.price}`);
}}>
{/* 商品列表项展示内容 */}
<p>{product.name}</p>
</div>
);
});
ProductDetailPage
组件:
import { component$, useRouteLoaderData } from '@builder.io/qwik';
export const ProductDetailPage = component$(() => {
const { data } = useRouteLoaderData();
const name = data.get('name') && decodeURIComponent(data.get('name') as string);
const price = data.get('price') && parseFloat(data.get('price') as string);
return (
<div>
<h1>{name}</h1>
<p>价格: {price}</p>
</div>
);
});
上述代码中,在商品列表页面通过navigate
函数跳转到商品详情页路由,并将商品名称和价格作为查询参数附加在URL中。在ProductDetailPage
组件中,使用useRouteLoaderData
获取路由数据,进而提取并展示商品名称和价格。