Search code examples
javascriptvue.jsvuejs3vue-router

could not display / switch pages with vue-router


I want to create a website and use vue-router for that.

After implementing everything the routing is not working out. The navbar is showing, but my components (mainView.vue, site.vue) are not displayed.

I don't get any errors.

What am I doing wrong on this? Thanks for your help!

router/index.js

import { createRouter, createWebHashHistory } from 'vue-router'
import homeView from "../components/mainView.vue";
import siteview from "../components/site.vue";

const routes = [
  {
    path: '/home',
    name: 'home',
    component: homeView
  },
  {
    path: '/site',
    name: 'site',
    component: siteView
  },
]

const router = createRouter({
  history: createWebHashHistory(process.env.BASE_URL),
  routes
})

export default router;

App.vue

<template>
  <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
        <div class="container-fluid">
            <a class="navbar-brand" to="/home" role="button">Navbar</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
                data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
                aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarSupportedContent">
                <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                    <li class="nav-item">
                        <a class="nav-link active" role="button" to="/home">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" role="button" to="/site">Site 1</a>
                    </li>    
                </ul>
            </div>
        </div>
    </nav>
</template>

Solution

  • <template>
      <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
            <div class="container-fluid">
                <a class="navbar-brand" to="/home" role="button">Navbar</a>
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
                    data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
                    aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                    <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                        <li class="nav-item">
                            <a class="nav-link active" role="button" to="/home">Home</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" role="button" to="/site">Site 1</a>
                        </li>    
                    </ul>
                </div>
                <router-view></router-view>
            </div>
        </nav>
    </template>
    export default {
      name: 'App'
    

    homeView.vue and siteView.vue will be displayed here <router-view> </router-view> when you click page link