vue_相同组件,不同url跳转不重新渲染的解决方法

摘要:
最近编写的项目有许多下拉菜单,每个菜单都有两种对应的类型。现在,产品需要在跳转到不同类型时重新渲染数据。我尝试了几种方法。我用手表听路线判断,但发现输入的值不会被替换。所以我想用钥匙。如果不使用密钥,Vue将使用最小化动态元素的算法,并尽可能修复/重用相同类型的元素。使用key,它将根据key的变化重新排列元素的顺序,并删除不存在key的元素。

最近写的这个项目,有很多下拉菜单,每个菜单会有相应的两种类型。现在产品的需求是,跳转到不同的类型 需要页面重新渲染数据

那么问题来了。

我试了好几种方法,用watch监听路由去判断,但是发现输在input里面的值是不会被替换掉的

所以想到了用key 去如果不使用key,Vue会使用一种最大限度减少动态元素并且尽可能的尝试修复/再利用相同类型元素的算法。使用key,它会基于key的变化重新排列元素顺序,并且会移除key不存在的元素。

因为工作性质,不能贴代码

所以

<router-view v-if="isRouterActive" :key="key"></router-view>

data(){

  return isRouterActive:true,

  key:''

}

watch:{

   '$route'(to,from){

      this.isRouterActive = false;

      this.key = Math.random()*1000;

      this.$nextTick(()=>(this.isRouterActive = true))

  }

}

免责声明:文章转载自《vue_相同组件,不同url跳转不重新渲染的解决方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用bacula实现Linux的远程备份和还原Nmap的活跃主机探测常见方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue 强制刷新子组件

原因:因为父组件有缓存等因素,子组件创建后没有释放,传入参数无效,使用v-if的特性(销毁和重建)可以强制刷新子组件 <el-drawer ref="detailTable" :title="detailTitle" :append-to-body="true" :visible.sync="d...

vue(js)点击目标div以外区域将目标div隐藏

今天开发新项目的时候,有个需求,点击一个div 展示出个弹出窗 弹出窗标题的颜色要跟点击的div图标颜色一致, 所以这就需要我遍历一下多个数据, 然后需要点击弹出div的外部其他区域,隐藏这个div。所以 有了以下操作! 这个点击事件@click.stop="isPop(item.event)" 加上.stop 起阻止冒泡的效果,这里很重要,具体原因就暂...

vue组件传值:父组件异步获取数据传递给子组件 吴小明

1、给子组件加上v-if 2、通过ref将异步获取的值赋值给子组件中对应的参数 3、子组件中通过watch监听props的值(或computed)-----常用 props: { data: { type: Object }},computed: { list() { const { id } = this.data r...

vue路由懒加载及组件懒加载

一、为什么要使用路由懒加载   为给客户更好的客户体验,首屏组件加载速度更快一些,解决白屏问题。 二、定义   懒加载简单来说就是延迟加载或按需加载,即在需要的时候的时候进行加载。 三、使用   常用的懒加载方式有两种:即使用vue异步组件 和 ES中的import 1、未用懒加载,vue中路由代码如下 import Vue from 'vue'...

【前端开发】基于vue的树形结构table拖拽排序教程

安装依赖drag-tree-table(更多文档见github) yarn add drag-tree-table html <dragTreeTable ref="table" :data="treeData" @drag="onTreeDataChange" onl...

如何运行vue项目

转载:如何运行vue项目 目录(?)[-] 安装cnpm 安装vue-cli脚手架构建工具 用vue-cli构建项目 安装项目所需的依赖 运行项目 在师兄的推荐下入坑vue.js ,发现不知如何运行GitHub上的开源项目,很尴尬。通过查阅网上教程,成功搭建好项目环境,同时对前段工程化有了朦朦胧胧的认知,因此将环境搭建过程分享给大家。 首先,列...