javascript - vue-router 注册全局组件的方法

标签 javascript vue.js vue-router

我将 Vue.js 与 vue-cli 结合使用。我选择了 webpack 设置。 我连接了用于路由的 main.js 文件,但我找不到全局注册我的组件的方法。

主要.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>

当我在某些 View 中使用我的 Loader 组件时,我收到以下警告。

[Vue warn]: Unknown custom element: - did you register the component correctly? For recursive components, make sure to provide the "name" option.

我在组件中提供了名称,但没有任何区别。我在登录 View 中使用加载器组件。
我发现我应该在我将要使用它的组件中或在全局范围内定义该组件。虽然,我无法找到如何使用路由全局定义它。

最佳答案

按照您现在的设置方式,加载器组件仅在 App 组件的模板中本地可用。

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

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

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

关于javascript - vue-router 注册全局组件的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36026747/

相关文章:

vue.js - 如何在 Nuxt 和 Vue SSR Web 应用程序中免除特定路由/页面的登录/授权?

javascript - 自定义事件是否会在 Vue 3 中向上传播组件链?

javascript - Vue Router next 回调总是在 beforeEach 中调用

javascript - 在vuejs中传递 Prop 数据

vue.js - vue-router 结合 laravel 路由

javascript - localStorage.clear();从 PC 清除所有?

javascript - nyroModal——如何配置模态框的宽高

javascript - 如何使用Firestore设计模型?

java - 如何将自定义 ScrollPanel 的高度设置为 100%?

javascript - Stripe.js - 无法更改信用卡输入的背景颜色或高度