问答

vue 路由跳转 url更新了 但是视图没变

作者:admin 2021-08-21 我要评论

我先描述下现象: 我按照如下代码配置了路由表 routes: [ { path:'/', component: () = import('../page/main.vue'), redirect: 'mainList', children: [{ path:...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

我先描述下现象:
我按照如下代码配置了路由表

routes: [
    {
      path:'/',
      component: () => import('../page/main.vue'),
      redirect: 'mainList',
      children: [{
        path:'mainList',
        component: () => import('../page/MainList.vue')
      },{
        path:'todoComponentA',
        component: () => import('../page/todoCom1.vue')
      },{
        path:'todoComponentB',
        component: () => import('../page/todoCom2.vue')
      },{
        path:'todoComponentC',
        component: () => import('../page/todoCom3.vue')
      }]
    }
  ]

这是点击导航栏【二】后的url
image.png

但是二级路由的视图中 123 显示的还是【首页】tab的内容
image.png

底部导航栏点击切换路由触发 router.push(url)
url会改变 但是页面中<router-view></router-view>不会随着url改变而改变

        <el-main class="main-content">
            <transition name="slide-right">
                <router-view></router-view>
            </transition>
        </el-main>
        <el-footer class="main-footer">
            <el-row>
                <el-col :span="6" :style="{color: curTab === 0 ? '#c42323':''}" @click.native="changeNav(0,'mainList')">
                    <el-col><i class="el-icon-s-home"></i></el-col>
                    <el-col class="main-footer-nav">首页</el-col>
                </el-col>
                <el-col :span="6" :style="{color: curTab === 1 ? '#c42323':''}" @click.native="changeNav(1,'todoComponentA')">
                    <el-col><i class="el-icon-s-home"></i></el-col>
                    <el-col class="main-footer-nav">二</el-col>
                </el-col>
                <el-col :span="6" :style="{color: curTab === 2 ? '#c42323':''}" @click.native="changeNav(2,'todoComponentB')">
                    <el-col><i class="el-icon-s-home"></i></el-col>
                    <el-col class="main-footer-nav">三</el-col>
                </el-col>
                <el-col :span="6" :style="{color: curTab === 3 ? '#c42323':''}" @click.native="changeNav(3,'todoComponentC')">
                    <el-col><i class="el-icon-s-custom"></i></el-col>
                    <el-col class="main-footer-nav">四</el-col>
                </el-col>
            </el-row>
        </el-footer>

纠结了很久 还是没找到问题在哪里

PS:编辑下 相同代码我用vue-cli重新搭了个普通的vue项目 路由跳转正常。但是在ts + vue环境下跳转就是有问题 代码层面 路由表、跳转事件触发应该都是一致的 希望有大神帮忙解惑

###

1.更改模式
vue-router HTML5 History 模式? 可以设置为history?模式解决问题

2.hash模式解决方案

mounted () {
  // 检测浏览器路由改变页面不刷新问题,hash模式的工作原理是hashchange事件
  window.addEventListener('hashchange', () => {
    let currentPath = window.location.hash.slice(1)
    if (this.$route.path !== currentPath) {
      this.$router.push(currentPath)
    }
  }, false)
}
###

怀疑是没有写/的原因

###

你把children里面的东西放出来,互相独立,试下效果。

###

有时候目标页面有语法问题,也是这种现象,可以检查下

###

用vuejs-devtools 插件在chrome里面调试看下,<router-view></router-view>渲染成什么了,没有变化,肯定页面有报错

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 使用箭头函数return数据不能实现

    使用箭头函数return数据不能实现

  • 个人小程序号能接入小程序3D地图吗?

    个人小程序号能接入小程序3D地图吗?

  • vue 移动端项目中,使用了better-scrol

    vue 移动端项目中,使用了better-scrol

  • css如何做出区域平均划分为四列

    css如何做出区域平均划分为四列

腾讯云代理商
海外云服务器