一、components/GlobalHeader.vue
<template> <nav class="navbar navbar-light bg-light border mb-2" style="color:#fff"> <div class="container"> <a class="navbar-brand" href="#"> 中地日报 </a> <div v-if="!user.isLogin" > <button class="btn btn-primary" style="margin-right:20px">登录</button> <button class="btn btn-success">注册</button> </div> <div v-else class="list-line mb-0"> <button class="btn btn-success">{{user.name}}</button> </div> </div> </nav></template><script lang="ts">import { defineComponent, PropType } from "vue";export interface UserProps { isLogin: boolean; name?: string; id?: number;}export default defineComponent({ name: "GlobalHeader", props: { user: { type: Object as PropType<UserProps>, required: true }, }});</script>
二、App.vue
<template><div class="container"> <global-header :user="user"></global-header></div></template><script lang='ts'>import { defineComponent } from 'vue'import ColumnList, { ColumnProps } from './components/ColumnList.vue'import GlobalHeader,{UserProps} from './components/GlobalHeader.vue'const currentUser:UserProps ={ isLogin:false, name:"中地数码", id:430000}export default defineComponent({ name: 'App', components: { GlobalHeader }, setup(){ return { user:currentUser } }})</script>