簡體   English   中英

Vue-router 只顯示基本路由

[英]Vue-router only showing the base route

我正在嘗試使用 vue-router。 但是,我遇到了一個問題,在查看了許多文章和文檔后我找不到解決方案。

我已經閱讀了幾篇關於如何使用 vue-router 的文章,但它們不起作用。

這是我的代碼。 我做了三個組件Home Login HelloWorld

我做了三個路線。

這是代碼

主.js:

import Vue from 'vue'
import App from './App.vue'
import VueRouter from 'vue-router';
// import Home from './components/Home.vue';
import HelloWorld from './components/HelloWorld.vue';
import Login from './components/Login.vue';


Vue.use(VueRouter)

Vue.config.productionTip = false


const router = new VueRouter({
  mode: 'history',
  base: __dirname,
  routes: [
    { path: '/hello', component: HelloWorld },
    { path: '/login', component: Login },
    { path: '/', component: App }
  ]
});


new Vue({
  router,
  render: h => h(App),
}).$mount('#app')

應用程序.vue:

<template>
  <div id="app">
    <HelloWorld/>
    <Login />
  </div>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'
import Login from './components/Login.vue'

export default {
  name: 'app',
  components: {
    HelloWorld,
    Login
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

登錄.vue:

<template>
  <div>
    <h1>Login </h1>    
  </div>
</template>

<script>
export default {
  name: 'Login',

}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>

HelloWorld.vue:

<template>
  <div>
    <h1>Hello World </h1>    
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',

}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>

package.json

  "name": "test-vue-router",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "core-js": "^2.6.5",
    "vue": "^2.6.10",
    "vue-router": "^3.0.6"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "^3.8.0",
    "@vue/cli-plugin-eslint": "^3.8.0",
    "@vue/cli-service": "^3.8.0",
    "babel-eslint": "^10.0.1",
    "eslint": "^5.16.0",
    "eslint-plugin-vue": "^5.0.0",
    "vue-template-compiler": "^2.6.10"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended"
    ],
    "rules": {},
    "parserOptions": {
      "parser": "babel-eslint"
    }
  },
  "postcss": {
    "plugins": {
      "autoprefixer": {}
    }
  },
  "browserslist": [
    "> 1%",
    "last 2 versions"
  ]
}

兩條路線都不起作用。 每次,我通過更改 URL 按 Enter 鍵。 基本路線(即/ )總是出現。

它顯示了 App.vue 組件。

謝謝

您在app.vue中的模板缺少路由器組件<router-view/> ,試試這個:

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

請注意, <router-view/>標簽是您的頁面/組件將被呈現的地方。

此外,您的 routes 數組上的基本路由/不正確, App組件是根組件,它將持有其他頁面/組件作為其子組件,因此App組件不能成為路由之一。

看起來您只是缺少 App.vue 上的<router-view/>標記。 <router-view/>將根據 url 渲染您的組件,因此您無需自己導入組件。

試試這個:

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM