代码之家  ›  专栏  ›  技术社区  ›  Karlom

虚拟用户.js路由器链接未加载组件

  •  2
  • Karlom  · 技术社区  · 6 年前

    Landing 组件,链接到 Login 组件。我想实现的是,当用户单击Login时,登录页面就会显示出来。

    <template>
            <div>
                <div class="landing">
                    <router-link to="/login">Login</router-link>
                    </div>
                </div>
            </div>
        </template>
    
        <script>
    
        export default {
            name: 'Landing',
            data: function () {
                return {
                }
            },
            methods:  {
    
            }
        }
        </script>
    

    import Vue from 'vue'
    import App from './App.vue'
    import VueRouter from 'vue-router'
    import Materials from "vue-materials"
    
    import Routes from './routes'
    
    const router = new VueRouter({
        routes: Routes,
        mode: 'history'
    });
    
    
    Vue.use(Materials)
    Vue.use(VueRouter);
    
    Vue.config.productionTip = false
    
    new Vue({
        router: router,
      render: h => h(App)
    }).$mount('#app')
    

    <template>
      <div id="app">
            <head>
              <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
              <link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.6/css/materialize.css" rel="stylesheet">
            </head>
    
            <NavbarComp/>        
            <Landing/>
            <FooterComp/>
      </div>
    </template>
    
    <script>
    import NavbarComp from './components/Navbar.vue';
    import FooterComp from './components/Footer.vue';
    import Landing from './components/Landing.vue';
    import Login from './components/Login.vue';
    import Register from './components/Register.vue';
    
    export default {
      name: 'app',
      components: {
        NavbarComp,
        Landing,
        FooterComp,
        Login,
        Register
      }
    }
    </script>
    

    路线.js:

    import Login from './components/Login.vue'; 
    import Register from './components/Register.vue'; 
    import Landing from './components/Landing.vue'; 
    
    export default [
      {path: '/login', component: Login, name: 'Login'},
      {path: '/register', component: Register, name: 'Register'},
      {path: '/', component: Landing, name: 'landing'},
    ]
    

    最后,登录.vue:

    <template>  
      <div>
         <h2>Login</h2>    
       </div>
    
    </template>
    
    <script>
    
    import axios from 'axios';
    
    export default {
      name: 'Login',
      data: function () {
          return {
            ok: true,
            showErrorRegister: false,
            showErrorLogin: false,
            username: "",
            password: "",
            email: "",
            error: "",            
          }   
      },
    

    当我单击Login link时,URL栏中的链接会发生变化,但是组件不会出现,而且我在控制台中没有看到任何错误。所以我不知道该怎么办。

    我怎样才能解决这个问题?

    1 回复  |  直到 6 年前
        1
  •  7
  •   Zak Avery    6 年前

    详细说明科里的评论——我认为这是问题所在。你失踪了 <router-view> .

    <Landing/> 组件。你应该替换 < 具有 <router-view/> . 这样,当路径为“/”时 <路由器视图> 将呈现 < 就像现在一样。当路由路径(通过路由器链接)更改为“/登录”时,路由器将呈现 <Login/>

    目前路由器指向正确的登录组件,但是没有地方呈现它。

    https://router.vuejs.org/guide/#html