一、components/Dropdown.vue

  1. <template>
  2. <div class="dropdown">
  3. <button
  4. class="btn btn-secondary dropdown-toggle"
  5. type="button"
  6. @click="toggle"
  7. >
  8. {{name}}
  9. </button>
  10. <div class="dropdown-menu" style="display:block" v-if="isShow">
  11. <a class="dropdown-item" href="#">Action</a>
  12. <a class="dropdown-item" href="#">Another action</a>
  13. <a class="dropdown-item" href="#">Something else here</a>
  14. </div>
  15. </div>
  16. </template>
  17. <script lang="ts">
  18. import { defineComponent, ref } from "vue";
  19. export default defineComponent({
  20. name: "Dropdown",
  21. props:{
  22. name:{
  23. type:String
  24. }
  25. },
  26. setup(){
  27. const isShow = ref(false);
  28. const toggle = ()=>{
  29. isShow.value = !isShow.value
  30. }
  31. return {
  32. isShow,
  33. toggle
  34. }
  35. }
  36. });
  37. </script>

二、GlobalHeader.vue中使用

  1. <template>
  2. <nav class="navbar navbar-light bg-light border mb-2" style="color:#fff">
  3. <div class="container">
  4. ...
  5. <div v-else class="list-line mb-0">
  6. <dropdown :name="user.name"></dropdown> ++
  7. </div>
  8. </div>
  9. </nav>
  10. </template>
  11. <script lang="ts">
  12. import { defineComponent, PropType } from "vue";
  13. import Dropdown from './Dropdown.vue'
  14. export interface UserProps {
  15. isLogin: boolean;
  16. name?: string;
  17. id?: number;
  18. }
  19. export default defineComponent({
  20. name: "GlobalHeader",
  21. props: {
  22. user: {
  23. type: Object as PropType<UserProps>,
  24. required: true
  25. },
  26. },
  27. components:{
  28. Dropdown ++
  29. }
  30. });
  31. </script>