账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue中路由跳转失败,url有变化,但是页面只能跳转一次,再次点击仅有url变化,页面不再变化?
    27
    0

    vue中点击跳转,url一直有变化,但是页面只能跳转一次,再怎么点击都只有url在变化,页面不在变化了,涉及技术有typescript iview vue,求指点谢谢

    1.这是router.ts

    {
      path: '/login',
      name: 'login',
      component: () => import('./views/Login.vue'),
    },
    {
      path: '/home',
      name: 'home',
      component: () => import('./views/Home.vue'),
    },
    {
      path: '/backend',
      name: 'layout',
      component: () => import('./views/layout.vue'),
      children: [
        {
          path: '/backend/addGame',
          name: 'addGame',
          component: () => import('./views/chessGame/gameManage/addGame.vue'),
        },
        {
          path: '/backend/gameInfo',
          name: 'gameInfo',
          component: () => import('./views/chessGame/gameManage/gameInfo.vue'),
        },
      ],
    },
    

    2.这是layout.vue 就是把组件拼在一起的父模板

    <template>
        <div>
            <topNav></topNav>
            <menuNav></menuNav>
            <leftNav></leftNav>
            <urlNav></urlNav>
            <router-view id='routerView'/>
        </div>
    </template>
    
    <script lang="ts">
        import { Component, Vue } from 'vue-property-decorator';
        import topNav from '@/components/topNav.vue';
        import menuNav from '@/components/menuNav.vue';
        import leftNav from '@/components/leftNav.vue';
        import urlNav from '@/components/urlNav.vue';
    
        @Component({
            components: {
                topNav,
                menuNav,
                leftNav,
                urlNav,
            },
        })
    
        export default class Home extends Vue {}
    </script>
    

    3.这是根节点 app.vue

    <template>
      <div id="app">
        <transition
          enter-active-class="animated fadeIn"
          leave-active-class="animated fadeOut"
          mode="out-in"
        >
          <router-view/>
        </transition>
      </div>
    </template>
    

    4.这是部分的跳转页面代码,是layout中子组件的一部分

    <Menu :open-names="['1']" @on-select="clickLeft">
        <Submenu name="1">
           <template slot="title"><Icon type="ios-game-controller-b" />游戏管理</template>
           <MenuItem name="添加游戏" :to="{name: 'addGame'}">添加游戏</MenuItem>
           <MenuItem name="游戏信息" :to="{name: 'gameInfo'}">游戏信息</MenuItem>
         </Submenu>
    </Menu>
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 流年的伤。 普通会员 1楼

      这个问题可能是由于Vue的路由监听器设置错误导致的。以下是一些可能的解决方案:

      1. 检查router的默认模式:router默认模式是history,这意味着每次页面跳转时,浏览器都会保存一个页面的URL。如果这是你想要的模式,那么请确保你没有在router配置中设置其他模式。

      2. 设置路由监听器:在Vue的router组件中,你可以使用router.beforeEach钩子来处理路由的切换。这个钩子会在路由切换前被调用。你可以在这里设置一些逻辑,例如在切换路由后清除旧的URL。

      3. 使用router.push:在Vue中,你可以使用router.push方法来刷新页面。这将立即跳转到新页面,而不是保存旧的URL。

      4. 使用router.replacerouter.replace方法可以替换旧的页面,而不是保存旧的URL。这将使页面在切换路由后重新加载,而不是保存旧的URL。

      以下是一个简单的例子:

      javascript export default { name: 'App', router: { mode: 'history', routes: [ { path: '/old-page', component: OldPage }, { path: '/new-page', component: NewPage }, ] }, created() { this.$router.push('/new-page'); }, beforeEach(to, from, next) { this.$router.replace(to, from); next(); }, };

      在这个例子中,当用户从 '/old-page' 跳转到 '/new-page' 时,页面将重新加载。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部