面试题答案
一键面试设计思路
- 使用动态组件:根据用户登录状态动态切换要显示的组件。在Vue中,可以通过
is
指令来实现动态组件的渲染。 - Vue插槽:用于在组件内部提供可复用的内容区域,以便在不同场景下填充不同的内容。例如,在用户信息卡片组件中,插槽可用于放置用户特定的信息片段。
主要代码片段
- 定义组件:
- 登录提示组件
LoginPrompt.vue
:
- 登录提示组件
<template>
<div>请登录以查看更多内容</div>
</template>
- 用户信息卡片组件`UserInfoCard.vue`:
<template>
<div class="user - info - card">
<h2>用户信息</h2>
<slot name="user - name"></slot>
<slot name="user - email"></slot>
</div>
</template>
- 在父组件中使用动态组件和插槽:
<template>
<div>
<component :is="isLoggedIn? 'UserInfoCard' : 'LoginPrompt'">
<template v - if="isLoggedIn" v - slot:user - name>{{ user.name }}</template>
<template v - if="isLoggedIn" v - slot:user - email>{{ user.email }}</template>
</component>
</div>
</template>
<script>
import LoginPrompt from './LoginPrompt.vue';
import UserInfoCard from './UserInfoCard.vue';
export default {
components: {
LoginPrompt,
UserInfoCard
},
data() {
return {
isLoggedIn: true, // 假设初始为登录状态
user: {
name: '张三',
email: 'zhangsan@example.com'
}
};
}
};
</script>
上述代码实现了根据isLoggedIn
状态动态展示不同组件,并且在UserInfoCard
组件中通过插槽传递用户信息。