Структура директории
pages:
contacts.vue
index.vue
landing.vue
В index.vue при определенных обстоятельствах, нужно открывать contacts, а при других landing.
//index.vue
<contacts v-if="show === 'contacts'"></contacts>
<landing v-else></landing>
import contacts from './contacts';
import landing from './landing';
...
asyncData() {
let show = 'landing';
if (someCondition) {
show = 'contacts';
}
return {show};
}
Пример утрирован, но суть указана верно.
В общем метод asyncData в landing.vue и в contacts.vue не срабатывает.
Что делать? Дублировать код?
UPD:
В докуметации сказано, что asyncData не работает в компонентах, а работает только на страницах, поэтому я и пытаюсь импортировать страницу. Но видимо не работает при импорте других файлов вообще.
В обычном vue-cli я бы просто подставлял нужный файл в routes.
Например:
import contacts from '~/components/contacts';
import landing from '~/components/landing';
routes: [
{path: '/', name: 'Home', component: (someCondition ? contacts : landing)},
]
Но из-за того что в nuxt роутинг на файлах, я так сделать не могу.