Подтвердить что ты не робот

Как зарегистрировать глобальные компоненты с помощью vue-router

Я использую Vue.js с vue-cli. Я выбрал для настройки веб-пакета. Я подключил файл main.js для маршрутизации, хотя я не могу найти способ глобально зарегистрировать мои компоненты.

main.js

import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App'
import Companies from './components/pages/Companies'
import Income from './components/pages/Income'
import Login from './components/pages/Login'

Vue.use(VueRouter)

let router = new VueRouter()

router.map({
  '/companies': {
    component: Companies
  },
  '/income': {
    component: Income
  },
  'login': {
    component: Login
  }
})

router.start(App, 'body')

App.vue

<template>
  <div>
    <router-view></router-view>
  </div>
</template>
<script>
import {Auth} from './lib/api'
import Loader from './components/Loader'

export default {
  components: {
    Loader
  },
  ready () {
    Auth.isLoggedIn().then(
      (response) => {
        if (response.data === false) {
          this.$router.go('/login')
        } else {
          this.$router.go('/companies')
        }
      },
      (response) => {
        this.$router.go('/login')
      }
    )
  }
}
</script>

Когда я использую свой компонент Loader в некотором представлении, я получаю следующее предупреждение.

[Vue warn]: Неизвестный пользовательский элемент: - правильно ли вы зарегистрировали компонент? Для рекурсивных компонентов обязательно укажите "имя".

Я представил имя в компоненте, и это не имело никакого значения. Я использую компонент loader в окне входа в систему.
Я узнал, что должен либо определить компонент в компоненте, который я собираюсь использовать, либо глобально. Хотя, я не могу определить, как определить его глобально с помощью маршрутизации.

4b9b3361

Ответ 1

Способ, которым вы его настроили сейчас. Компонент загрузчика доступен только локально в шаблоне компонента приложения.

Маршрутизация не влияет на регистрацию глобальных компонентов, просто делайте это без маршрутизатора:

// main.js, before all the router stuff:
import Loader from './components/Loader'
Vue.component('loader', Loader)

или зарегистрировать его локально в вашем компоненте Login. Как вы уже делали это в App.vue, вы знаете, что делать с Loader.vue