【问题标题】:Vue.js 3- Component doesn't load in VueJS with routerVue.js 3-组件没有在带有路由器的 VueJS 中加载
【发布时间】:2021-03-06 13:04:22
【问题描述】:

当我单击路由器链接进入注册表单页面时,URL 会更改,但组件不会加载。

我在一个组件中有导航栏,我认为它是错误的,但是没有......

这是路由器的文件代码:

    import {createRouter, createWebHashHistory} from 'vue-router'

const routes = [
    {
        path: '/',
        name: 'Home',
        component: () => import(/* webpackChunkName: "home" */ '../views/Home.vue')
    },
    {
        path: '/formulario-registro',
        name: 'RegisterForm',
        component: () => import(/*webpackChunkName: "registerform"*/ '../views/RegisterForm.vue')
    }

]

const router = createRouter({
    history: createWebHashHistory(),
    routes
});

export default router

这是我的导航组件,其中有路由器链接:

  <div class="nav">
<div class="brand">
  <router-link to="/">BookArt</router-link>
</div>
<div class="collapse">
  <span id="mobile-icon" v-on:click="responsiveNavbar"></span>
</div>
<div class="links">
  <ul id="nav-list-group">
    <li class="list-item">
      <router-link to="/"> Inicio</router-link>
    </li>
    <li class="list-item">
      <router-link to="/formulario-registro"> Registro</router-link>
    </li>
    <li class="list-item">
      <router-link to=""> Login</router-link>
    </li>
  </ul>
</div>

我的 main.js 代码:

    import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

createApp(App).use(store).use(router).mount('#app')

还有我的 App.vue 代码:

 <template>
  <Nav></Nav>
  <router-view/>
</template>

<script>

import Nav from '@/components/Nav.vue'

export default {
  components: {
    Nav
  }
}
</script>

这是我的注册表单组件的代码:

   <template>
  <form action="">
    <div class="form-group">
      <input type="text" name="form.username" id="form.username" class="username" placeholder="Nombre de usuario....">
    </div>
    <div class="form-group">
      <input type="file" name="form.profile_pic" id="form.profile_pic" class="profile_pic"
             placeholder="Foto de perfil....">
    </div>
    <div class="form-group">
      <input type="email" name="form.email" id="form.email" class="email" placeholder="Email....">
    </div>
    <div class="form-group">
      <input type="password" name="form.password" id="form.password" class="password" placeholder="*******">
    </div>
    <div class="form-group">
      <input type="password" name="form.confirm_password" id="form.confirm.password" class="confirm_password"
             placeholder="*******">
    </div>
    <div class="form-group">
      <button>Registrarse</button>
    </div>
  </form>

</template>

<script>
export default {
  name: "Register-form",

  mounted() {
    console.log('Its ok');
  }

}
</script>

【问题讨论】:

  • 请分享 main.js 和 app.vue 代码
  • @BoussadjraBrahim 我已经添加了它们。
  • 代码似乎可以正常工作,您是否在控制台中遇到错误?
  • 我收到警告 runtime-core.esm-bundler.js?5c40:38 [Vue warn]: Unhandled error during execution of scheduler flush. This is likely a Vue internals bug. Please open an issue at 和以下错误 Uncaught (in promise) RangeError: Maximum call stack size exceeded at renderComponentRoot
  • 所有这些看起来都是正确的。所以我很想看到RegisterForm 代码。 “超出堆栈大小”表示可能存在无限循环。

标签: javascript vue.js vue-router vuejs3 vue-router4


【解决方案1】:

问题出在 ../view/RegisterForm 呈现自身的组件中:

<template>
  <RegisterForm></RegisterForm><!-- this is the component itself not th child one-->
</template>

<script>
import RegisterForm from '@/components/Register-form';
export default {
  components: {
    RegisterForm
  },
  name: "RegisterForm"
}
</script>

<style scoped>
</style>

这会产生一个无限循环,解决这个问题只需更改导入组件的名称:

<template>
  <RegisterForm1></RegisterForm1>
</template>

<script>
import RegisterForm1 from '@/components/RegisterForm1';
export default {
  components: {
    RegisterForm1
  },
  name: "RegisterForm"
}
</script>

<style scoped>
</style>

【讨论】:

  • 从一开始就关注这个。我意识到了一些事情。缺少信息会导致浪费时间。一个简单的解决方案,但需要 1 小时。干得好:)
  • @omerS,谢谢,通常这些简单的问题需要很多时间
  • @BoussadjraBrahim 这太棒了!!我永远不会看到那个错误。干得好,非常感谢!如果这个项目可以继续下去,那是对你的帮助!!
猜你喜欢
  • 1970-01-01
  • 2019-11-29
  • 2022-01-01
  • 2018-02-10
  • 2022-07-25
  • 1970-01-01
  • 2021-11-09
  • 2021-12-15
相关资源
最近更新 更多