sectionTopNav() {
const route = this.$router.currentRoute.path.split('/')[1]
this.component = () =>
import(`@/components/${route}.vue`)
},
},
но так как computed - срабатывает только при обновлении страницы
как заставить его делать это при изменении роута?
watch: { '$route': function (value) { } }
большое спасибо!
вот это хрень какая-то :) Используй динамические импорты и выбирай нужный компонент через computed <template> <component v-if="component" :is="component" /> </template> <script> export default { components: { component1: () => import(...), component2: () => import(...), component3: () => import(...), component4: () => import(...), }, computed: { component () { return [ 'component1', 'component2', 'component3', 'component4' ].find(c => c === this.$route.name ) } } } </script>
я так и сделал. просто теперь если есть ссылка на странице, ведущая на роут который не существует - а компонента с таким именем нет, ошибку выдает просто хочу проверять перед импортом, существование компонента в папке
не помогает, все равно ошибку выдает Reason: Error: Cannot find module './docs.vue'
const AsyncComponent = () => ({ // The component to load (should be a Promise) component: import('./MyComponent.vue'), // A component to use while the async component is loading loading: LoadingComponent, // A component to use if the load fails error: ErrorComponent, // Delay before showing the loading component. Default: 200ms. delay: 200, // The error component will be displayed if a timeout is // provided and exceeded. Default: Infinity. timeout: 3000 })
почему не сделать по человечески? :) Ты не знаешь, какие компоненты могут быть вызваны? У тебя прям оооочень много компонентов, которые могут быть вызваны?
дело не в этом. страницы docs не существует(мы же не знаем, какие еще юзер там в адресе наберет), показывается страница 404, но так как в хэдере подключается компонент с таким же именем - вот мне надо чето с этой ошибкой сделать, либо проверять и подключать какой то дефолтный компонент, вместо несуществующего, либо не подключать никакой вот надо как то проверить, а как?
Так я и говорю же. Какая разница, что там вводит юзер в адресную строку? У тебя есть список роутов и список компонентов. Если роут не соответствует ни одному из компонентов - делаешь, что тебе нужно
computed: { component () { return [ 'component1', 'component2', 'component3', 'component4' ].find(c => c === this.$route.name ) } }
опять же, как при таком варианте проверить, на существование компонента?
https://t.me/nuxtjs_ru/168556
он все равно будет выдавать ошибку, если компонент отсутствует
Еще раз nuxt не работает с вашей структурой папок. Он собирает все файлы в один и потом его запускает.
😄 Ты код мой видел? Ты не подставляешь роут в импорт
короче я посчитал, у меня 7 динамических блоков в хэдере, и 52 раздела - итого 364 импорта надо написать. и это только в хэдэре будет ) не, спасибо )
Где ты не туда свернул
потому что для каждого из 52 разделов в эти 7 блоков подбираются то есть, берем 1 раздел надо для него 7 блоков импортнуть, чтобы хэдэр собрать берем второй - так же и так 52 раза
52 раза уникальные 7 компонентов шапки?
содержимое подключаемых блоков меняется в зависимости от раздела, иногда одинаковое, в разных вариациях, но в целом да, в основном все разные
В таком случае, я бы сказал, что тебе нужно, так или иначе, подготовить 52 шапки и уже их подключать по роуту
я думал об этом ) но не стал, оформление общее в принципе я тут выше пару дней назад по этой теме задавал вопрос, я думал вообще сделать отдельно все сервисы, в разных репозиториях, но потом решил морду сделать в одном сильно накладно все это поддерживать будет в одиночку ) а вот бэк разделю скорее всего
попробовал этот вариант появилась вспышка при переходе по ссылкам почему то перезагружаются картинки все заново(логотип, и на странице) и js скрипты всегда загружаются по новой предполагаю что переиспользования компонентов не происходит
Обсуждают сегодня