Я хочу, чтобы заголовок страницы имел другое значение для каждой страницы.
В обычном Vue.js я сделал следующее:
import router from './router'
import { store } from './store/store';
router.beforeEach((to, from, next) => {
store.mutations.setRoute(to);
document.title = store.getters.pageTitle;
next();
}
Как я могу получить этот эффект в nuxt?
То есть, как при загрузке начальной страницы, так и при смене страниц, я хочу изменить заголовок вкладки браузера. Например, от "Мое приложение - О" до "Мое приложение - Профиль".
из nuxt docs в каждом компоненте pages
вы можете определить функцию head, которая возвращает заголовок страницы, т.е.
head() {
return {
title: "About page"
};
}
Я нашел способ сделать это, но я не знаю, является ли это "правильным" способом. Я использую функцию nuxt.config.js
mounted()
в default.vue
для начальной загрузки страницы и свойства transition
в nuxt.config.js
для каждой смены страницы. Итак, в default.vue
:
...mapGetters(['appTitle']),
...mapMutations(['setRoute']),
mounted() {
this.setRoute(this.$route.name);
document.title = this.appTitle();
}
И в nuxt.config.js
:
transition: {
name: 'page',
mode: 'out-in',
beforeEnter (el) {
this.$store.commit("setRoute", this.$route.name);
document.title = this.$store.getters.appTitle;
}
},