useTitle.js 471 B

1234567891011121314151617181920212223
  1. import { watch, ref } from 'vue'
  2. import { isString } from '@/utils/is'
  3. import { useI18n } from './useI18n'
  4. const mTitle = import.meta.env.VITE_APP_TITLE
  5. export const useTitle = (newTitle) => {
  6. const { t } = useI18n()
  7. const title = ref(
  8. newTitle ? `${mTitle} - ${t(newTitle)}` : mTitle
  9. )
  10. watch(
  11. title,
  12. (n, o) => {
  13. if (isString(n) && n !== o && document) {
  14. document.title = n
  15. }
  16. },
  17. { immediate: true }
  18. )
  19. return title
  20. }