You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
569 B
TypeScript
26 lines
569 B
TypeScript
|
4 years ago
|
import { watch, ref } from 'vue'
|
||
|
|
import { isString } from '@/utils/is'
|
||
|
|
import { useAppStoreWithOut } from '@/store/modules/app'
|
||
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
||
|
|
|
||
|
|
const appStore = useAppStoreWithOut()
|
||
|
|
|
||
|
|
export function useTitle(newTitle?: string) {
|
||
|
|
const { t } = useI18n()
|
||
|
|
const title = ref(
|
||
|
|
newTitle ? `${appStore.getTitle} - ${t(newTitle as string)}` : appStore.getTitle
|
||
|
|
)
|
||
|
|
|
||
|
|
watch(
|
||
|
|
title,
|
||
|
|
(n, o) => {
|
||
|
|
if (isString(n) && n !== o && document) {
|
||
|
|
document.title = n
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{ immediate: true }
|
||
|
|
)
|
||
|
|
|
||
|
|
return title
|
||
|
|
}
|