2
0
mirror of https://github.com/tenrok/vue-meta.git synced 2026-06-15 18:02:24 +03:00
Files
vue-meta/examples/vue-router/Child.ts
T

64 lines
1.5 KiB
TypeScript

import { defineComponent, ref, reactive, computed, toRefs, onUnmounted } from 'vue'
import { isSymbol } from '@vue/shared'
import { useRoute } from 'vue-router'
import { useMeta } from '../../src'
let metaUpdated = 'no'
export default defineComponent({
name: 'ChildComponent',
setup () {
const route = useRoute()
const state = reactive({
date: null,
metaUpdated
})
const ogTitle = ref('Og Child Title')
let routeName: string
if (isSymbol(route.name)) {
routeName = route.name.toString()
} else if (route.name) {
routeName = route.name
}
const metaConfig = computed(() => ({
charset: 'utf16',
title: routeName[0].toUpperCase() + routeName.slice(1),
description: 'Description ' + routeName,
og: {
title: ogTitle.value + ' ' + routeName
},
htmlAttrs: routeName !== 'home'
? {}
: {
lang: ['nl']
}
}))
const { onRemoved } = useMeta(metaConfig)
const pageName = computed(() => routeName)
onUnmounted(() => (metaUpdated = 'yes'))
setTimeout(() => (ogTitle.value = 'Updated Child Og Title'), 1000)
setTimeout(() => (delete (metaConfig.value as Partial<typeof metaConfig.value>).og), 3000)
onRemoved(() => {
console.log('Meta was removed', pageName.value)
})
return {
...toRefs(state),
pageName
}
},
template: `<div>
<h3>You're looking at the <strong>{{ pageName }}</strong> page</h3>
<p>Has metaInfo been updated due to navigation? {{ metaUpdated }}</p>
</div>`
})