vue3前端开发-小兔鲜项目-登录和非登录状态下的模板适配!有了上次的内容铺垫,我们可以根据用户的token来判定,到底是显示什么内容了。
1:我们在对应的导航组件内修改完善一下内容即可。
<script setup>
import { useUserStore } from '@/stores/user';
const userStore = useUserStore()
</script>
<template>
<nav class="app-topnav">
<div class="container">
<ul>
<!--多模板渲染区分用户登录状态-->
<template v-if="userStore.userInfo.token">
<li><a href="javascript:;"><i class="iconfont icon-user"></i>{{userStore.userInfo.account}}</a></li>
<li>
<el-popconfirm title="确认退出吗?" confirm-button-text="确认" cancel-button-text="取消">
<template #reference>
<a href="javascript:;">退出登录</a>
</template>
</el-popconfirm>
</li>
<li><a href="javascript:;">我的订单</a></li>
<li><a href="javascript:;">会员中心</a></li>
</template>
<template v-else>
<li><a href="javascript:;" @click="$router.push('/login')">请先登录</a></li>
<li><a href="javascript:;">帮助中心</a></li>
<li><a href="javascript:;">关于我们</a></li>
</template>
</ul>
</div>
</nav>
</template>
<style scoped lang="scss">
.app-topnav {
background: #333;
ul {
display: flex;
height: 53px;
justify-content: flex-end;
align-items: center;
li {
a {
padding: 0 15px;
color: #cdcdcd;
line-height: 1;
display: inline-block;
i {
font-size: 14px;
margin-right: 2px;
}
&:hover {
color: $xtxColor;
}
}
~li {
a {
border-left: 2px solid #666;
}
}
}
}
}
</style>
2:主要是,第一步导入我们刚刚定义的pinia内容。
然后再补充完善一下,对应的v-if判定参数。
有这个判定后,就可以根据token信息,来判定,到底是显示什么内容了。
非常方便。如果没有这个token,就会显示第二个模板的内容《提示用户请先登录》