vue-router3.0版本中 router.push 不能刷新页面的问题
作者:agui1989 发布时间:2024-04-30 10:44:34
在 github 的 vue-router 中找到同样的一个问题:3.0.1版本通过router实例无法跳转
昨天发现有些路由不能正常跳转,找了一下发现都是那些实例化后使用 router.push 而不是直接使用 this.$router.push 的地方。
出现的情况是 router.push 后,url变化了,但是页面没有刷新,手动刷新一下才出现应有的画面。
我看了一下 package.json,我的 vue 和 axios 是没有写版本号,但 vue-router 明明写了版本号,怎么可能以前行的,现在就不行了呢?
然后,我使用 npm view vue-router 查看后才发现使用的已经不是 package.json 中的版本了,于是断定也许是我前几天 npm update 了!
( 以后不要随便 update 了! )
具体为什么新版本不行了,我也不太清楚。
最简单的解决办法当然是直接把 router.push 改成 this.$router.push
但是,如果这样可以的话,我当初为什么要在组件内再实例化一个 Router 呢?
显然是因为有些地方的 this 并不是 vue,那么,再实例化一个 vue,然后使用 vue.$router 行吗?
答案当然是不行的,因为这个 vue 与 其它地方的 vue 应该又不是同一个对象了。
那么,终极的解决方案就是:
把全局的 vue 中的 router 加到 window 中,也就在 main.js 中使用:
window.router=router
然后其它任何地方就可以直接愉快地使用 router.push 等 router 的方法了。
分析原因:
实例后的 router 不能刷新页面,应该是因为它与全局的vue中的 this.$router 的不是同一个,而之前的版本中能直接这样使用,应该是使用了单例。
至于为什么不使用单例了,这个我怎么会知道?
来源:https://segmentfault.com/a/1190000014803149


猜你喜欢
- 1.建表脚本1.1.建表DROP TABLE IF EXISTS `sys_region`;CREATE TABLE `sys_region
- 目前两个客户端扩展库连接超时可以设置选项来操作,比如mysqli: <?php //创建对象 $mysqli = mysqli_ini
- 最近Google官方的开发者博客中宣布新的版本Tensorflow(0.12)将增加对Windows的支持,想试着windows10下学习t
- 最近,需要对日志文件进行实时数据处理。一、简单的实时文件处理(单一文件)假设我们要实时读取的日志的路径为: /data/mongodb/sh
- 周末出去爬山,照了一大堆照片回来,照片同时存储为jpg和DNG格式,我用adobe bridge将dng格式的照片中要保留的筛选出来后,就不
- Socket 套接字:通讯端点 简介socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读
- 假如文件夹有大量视频文件,需求目标是想从每个视频中提取一帧作为视频的一个封面图片,本文利用opencv-python模块实现需求。结合自己的
- 一、前言其实,在开发过程中,虽然我们没有直接使用到描述符,但是它在底层却无时不刻地被使用到,例如以下这些:function、bound me
- 今天群里有人问了个问题是这样的: 然后有群友是这样回答的 select name,sum(case when stype=4 t
- 1.什么是labelpandas处理数据时,我们会经常看到dataframe结构使用loc, iloc, ix等方法。那么这些方法到底有啥区
- 原因是dict.keys()的返回结果不再是一个list了Python3的keys(), values(), items()返回的都是迭代器
- FrontPage 2003在功能上增强了不少,下面我们一起来看看新版本中比较突出的9个新功能。1.自定义浏览器分辨率预览检查 在
- 第三方库 binarytree其使用环境、安装方法及二叉树的相关知识,请见:《Python 初识二叉树,新手也秒懂!》不能导入的请安装:pi
- 索引( Index )是常见的数据库对象,它的设置好坏、使用是否得当,极大地影响数据库应用程序和Database 的性能。虽然有许多资料讲索
- 以下是不正确的用法: var exp = undefined; if (exp == undefined) { alert("un
- CSS styles和HTML styles有什么区别?HTM style是指自定义HTML标识中一些标签,例如说在HTML中〈B〉〈/B〉
- 本文为大家分享了MySQL 5.7版本的安装使用详细教程,更改数据库data的存储路径,供大家参考,具体内容如下因为看到mysql5.7加入
- 问题你想自己去实现一个新的上下文管理器,以便使用with语句。解决方案实现一个新的上下文管理器的最简单的方法就是使用 contexlib 模
- 业务场景:需要记入访客的访问情况,但不能重复记入可以插入前进行判断要插入的数据是否存在业务代码如下 :INSERT INTO t_topic
- 一、创建一个进程实例化 Process 类创建一个进程对象然后调用它的 start 方法即可生成一个子进程from multiprocess