nav.png

一、components/GlobalHeader.vue

  1. <template>
  2. <nav class="navbar navbar-light bg-light border mb-2" style="color:#fff">
  3. <div class="container">
  4. <a class="navbar-brand" href="#"> 中地日报 </a>
  5. <div v-if="!user.isLogin" >
  6. <button class="btn btn-primary" style="margin-right:20px">登录</button>
  7. <button class="btn btn-success">注册</button>
  8. </div>
  9. <div v-else class="list-line mb-0">
  10. <button class="btn btn-success">{{user.name}}</button>
  11. </div>
  12. </div>
  13. </nav>
  14. </template>
  15. <script lang="ts">
  16. import { defineComponent, PropType } from "vue";
  17. export interface UserProps {
  18. isLogin: boolean;
  19. name?: string;
  20. id?: number;
  21. }
  22. export default defineComponent({
  23. name: "GlobalHeader",
  24. props: {
  25. user: {
  26. type: Object as PropType<UserProps>,
  27. required: true
  28. },
  29. }
  30. });
  31. </script>

二、App.vue

  1. <template>
  2. <div class="container">
  3. <global-header :user="user"></global-header>
  4. </div>
  5. </template>
  6. <script lang='ts'>
  7. import { defineComponent } from 'vue'
  8. import ColumnList, { ColumnProps } from './components/ColumnList.vue'
  9. import GlobalHeader,{UserProps} from './components/GlobalHeader.vue'
  10. const currentUser:UserProps ={
  11. isLogin:false,
  12. name:"中地数码",
  13. id:430000
  14. }
  15. export default defineComponent({
  16. name: 'App',
  17. components: {
  18. GlobalHeader
  19. },
  20. setup(){
  21. return {
  22. user:currentUser
  23. }
  24. }
  25. })
  26. </script>