逐浪CLI Studio技术站

vuePress-theme-reco 逐浪CMS发哥    2020 - 2021
逐浪CLI Studio技术站 逐浪CLI Studio技术站

Choose mode

  • dark
  • auto
  • light
首页
导览
  • vue
  • 证书
  • bootstrap
  • css
  • 开发
  • 微软技术
  • windows
  • C#
  • cms
  • 安全
  • 数据库
  • 网络
Bootstrap-Vue
视频
时间线
Bootstrap中国站
下载逐浪CMS
Contact
  • NPM
  • GitHub
  • 73ic工具站
  • 在线Markdown
  • Vs code技巧
  • zico图标
  • 逐浪字库
  • UNI国际字码表
  • 关于逐浪
  • 企业歌曲
author-avatar

逐浪CMS发哥

34

文章

94

标签

首页
导览
  • vue
  • 证书
  • bootstrap
  • css
  • 开发
  • 微软技术
  • windows
  • C#
  • cms
  • 安全
  • 数据库
  • 网络
Bootstrap-Vue
视频
时间线
Bootstrap中国站
下载逐浪CMS
Contact
  • NPM
  • GitHub
  • 73ic工具站
  • 在线Markdown
  • Vs code技巧
  • zico图标
  • 逐浪字库
  • UNI国际字码表
  • 关于逐浪
  • 企业歌曲
  • blog

    • VUE如何关闭Eslint 允许宽松调试的方法
    • Vue中文本输出的三种方法{{}}、v-html、v-text
    • pfx证书转jks证书方法
    • script标签引入vue方式开发如何写组件
    • vue cli 4定义站点发布在子目录下的两则
    • vue cli4中定义每个页面的title以及Keywords的方法
    • vue cli4中引用bootstrap框架的两种方法
    • vue cli开发中:SASS和SCSS标签详解与scoped局部和全局的使用
    • vue-cli4注册全局组件
    • vue开发配置扫盲帖:什么是CSS Modules以及为什么引入CSS Modules?
    • 基于VuePress构建高基于markdown语法的网站全教程
    • 快速创建vuepress项目-使用vuepress+Markdown写文档并发布为网站
    • 精准调试-vue调试工具vue-devtools安装及完整使用教程
    • 解决vue路由跳转页面不刷新(页面变量加载不自动刷新)问题的两种方法

    解决vue路由跳转页面不刷新(页面变量加载不自动刷新)问题的两种方法

    vuePress-theme-reco 逐浪CMS发哥    2020 - 2021

    解决vue路由跳转页面不刷新(页面变量加载不自动刷新)问题的两种方法


    逐浪CMS发哥 2020-04-16 vue 刷新

    路由参数改变,页面数据不更新解决方法:

    http://localhost:8080/#test?id=1

    http://localhost:8080/#test?id=2,参数切换后,数据未更新

    vue-router同路由$router.push不跳转一个简单解决方案

    vue-router跳转一般是这么写:

    toCurrentPage: function(thisId){
              this.$router.push({path:'/test ', query: { id: thisId, option: ""}});
     }
    
    1
    2
    3

    但是当遇到,需要跳转同页面不同query的情况,上面的方法不起作用。当然了,从性能来说,理论上这种情况最佳的解决方案,是把需要刷新的包裹成一个init function,跳转的方法,传参再次调用init方法。balabalabala……不在赘述。

    但是另一些情况,基本页面所有组件都需要刷新,再次加载对开销影响不大,需要history.back以保证操作逻辑顺畅……我们只要跳转加载如此而已,那么其实也很简单,只需在上述方法基础上加上:

    watch: {
        '$route' (to, from) {
            this.$router.go(0);
        }
    },
    
    1
    2
    3
    4
    5

    下面是实际使用有效方法二则:

    #方法一

    # 通过路由传参跳转界面,页面没有刷新

    # 解决方法:在 router-view 中加 :key="$route.fullPath"

    <router-view :key="$route.fullPath"></router-view>
    
    1

    #方法二 再跳转后的路由观察路由变化,进行页面刷新(这种方法相对来说会加载慢一些,用户体验差)。

    		watch: {    
    	    '$route' (to, from) {   
    	         this.$router.go(0);
    			 }
    		}
    
    1
    2
    3
    4
    5

    附一个完整页面示例:

    <template>
    <div>
    	<div class="container">
    	<ul class="list-unstyled">
    	<li  v-for="item in list" :key="item.GeneralID"><a href="javascript:;" @click="navTo(item)">{{item.Title}}</a></li>
    	</ul>
    	</div>
    </div>
    </template>
    <script>
    	export default {
    		data: function() {
    			var model = {
    				list: []
    			};
    			var nid = this.$route.params.nid;
    			this.jsp("content_list", {"nid": nid}).then((ret) => {
    				model.list = JSON.parse(ret.result);
    			});
    			return model;
    		},
    		methods: {
    			navTo:function(item){this.$router.push("/Content/"+item.GeneralID);}
    		},
    		watch: {    
    	    '$route' (to, from) {   
    	         this.$router.go(0);
    			 }
    		}
    	}
    </script>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31