@kirill-93

Как вызвать asyncData в импортируемом файле?

Структура директории 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 роутинг на файлах, я так сделать не могу.
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 1
@nvdfxx
Senior Pomidor developer
А зачем вам метод asyncData в компонентах? Он же нужен для отображения этих самых компонентов. Какая-то логическая ошибка, нет?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы