同一个路由传参不同跳转,页面不刷新问题(vue2)

261 阅读1分钟

今天在写项目的时候,需要实现一个二级路由页面点击按钮不切换整体页面布局,只更换路由内容的功能,我设置v-if 显示隐藏切换后,虽然可以实现AB两个页面之间的切换,但是却存在一个问题。也许我可以点击切换后的B页面,将隐藏的A原始页面v-if状态从false变回true,但是,如果点击浏览器回退按钮,虽然可以回退到原始A页面,但其内容仍然处于隐藏状态,感官非常不好。

还出现了该报错: Avoided redundant navigation to current location

经过我多方查找资料(baidu),查看文档后,发现了一些大佬的回答非常有用。

使用router-view时,如果在相同路由之间跳转,默认在跳转路由时会采用缓存策略,并不会刷新当前路由组件。即mounted,beforeDestory等钩子函数并不会触发。

如果想强制刷新,可以在根路由上为其分配一个唯一key。采用$route.fullpath作为其唯一key。这样vue就回认为内部路由每个都是不同的路由,在跳转时便会强制刷新组件

救命恩人呀! 特此记录

image.png

`

<el-card class="box-card" v-if="isShow">
  <!-- 头部标题 -->
  <div slot="header" class="clearfix">
    <span>文章列表</span>

  </div>

  <el-form :inline="true" :model="formInline" class="demo-form-inline">
  
    <el-row :gutter="20">
      <!-- 左边内容 -->
      <el-col :span="22" label-width="80px" >
        <!-- 文章分类下拉框 -->
       <span class="sortArticle">文章分类:</span>
        <el-select v-model="value" clearable placeholder="文章分类" >
        <!-- 略 -->
        </el-select>

        <!-- 两个按钮 查询 重置 -->
        <el-form-item>
          <el-button type="primary" style="margin-left:10px">查询</el-button>
          <el-button >重置</el-button>
        </el-form-item>
      </el-col>
      <!-- 左边内容结束 -->

      <!-- 右边内容 发布文章按钮 -->
      <el-col :span="2">
        <el-button type="primary" @click="gotoAddArticle"><router-link to="/addarticle">发布文章</router-link></el-button>
      </el-col>
    </el-row>
  </el-form>

  <!-- ---------头部第二层具体内容结束-------------- -->
`

原文链接