如何使用vue-router注册全局组件

Swi*_*ger 19 javascript vue.js vue-router

我正在使用Vue.js和vue-cli.我选择了webpack设置.我连接了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')
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

当我在某个视图中使用我的Loader组件时,会收到以下警告.

[Vue警告]:未知的自定义元素: - 您是否正确注册了组件?对于递归组件,请确保提供"名称"选项.

我在组件中提供了名称,但没有任何区别.我在登录视图中使用了loader-component.
我发现我应该在组件中定义我要使用它或全局的组件.虽然,我无法找到如何使用路由全局定义它.

Lin*_*org 21

现在设置它的方式,加载程序组件仅在App组件的模板中本地可用.

路由对全局组件注册没有影响,就像没有路由器那样:

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

或在您的登录组件中本地注册它.正如您在App.vue中所做的那样,您知道如何处理Loader.vue

  • 我不知道你可以在没有root Vue实例的情况下注册它.谢谢! (2认同)