面试题答案
一键面试基本步骤
- 引入相关模块:在Qwik应用中,需要引入处理路由和状态管理相关的模块。
- 创建路由守卫逻辑:在路由配置或者页面加载逻辑中添加判断用户登录状态的逻辑。
- 处理未登录情况:如果用户未登录,将用户重定向到登录页面或者显示提示信息。
关键代码逻辑
- 引入模块
import { component$, useLocation, useNavigate } from '@builder.io/qwik';
import { useUserStore } from '../stores/userStore'; // 假设用户状态存储在这个store
- 创建路由守卫逻辑
export const MyProtectedPage = component$(() => {
const navigate = useNavigate();
const location = useLocation();
const { isLoggedIn } = useUserStore();
if (!isLoggedIn) {
// 处理未登录情况
navigate('/login', { state: { from: location } });
return null;
}
return (
<div>
<h1>Protected Page</h1>
<p>Content for logged in users only.</p>
</div>
);
});
在上述代码中:
- 通过
useUserStore
获取用户登录状态isLoggedIn
。 - 如果
isLoggedIn
为false
,使用useNavigate
将用户重定向到/login
页面,并通过state
传递当前位置信息,以便登录后可以返回原页面。 - 如果用户已登录,则正常渲染页面内容。