index.vue 598 B

12345678910111213141516171819202122232425262728293031323334
  1. <template>
  2. <vab-icon :class="className" icon="refresh-line" @click="refreshRoute" />
  3. </template>
  4. <script lang="ts" setup>
  5. defineOptions({
  6. name: 'VabRefresh',
  7. })
  8. const $sub = inject<any>('$sub')
  9. const $unsub = inject<any>('$unsub')
  10. const $pub = inject<any>('$pub')
  11. const className = ref<string>('')
  12. const rotate = () => {
  13. className.value = 'rotate'
  14. setTimeout(() => {
  15. className.value = ''
  16. }, 500)
  17. }
  18. const refreshRoute = () => {
  19. $pub('reload-router-view')
  20. rotate()
  21. }
  22. $sub('refresh-rotate', () => {
  23. rotate()
  24. })
  25. onUnmounted(() => {
  26. $unsub('reload-router-view')
  27. })
  28. </script>