我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue中$route序列号报错怎么解决

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue中$route序列号报错怎么解决

本文小编为大家详细介绍“Vue中$route序列号报错怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue中$route序列号报错怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

由于Vuex在浏览器刷新是会丢失数据,所以我在项目里使用了Vuex持久化存储的功能,我这边实现的方案是监听页面刷新的事件,将Vuex中的数据存到sessionStorage中,在页面初始化的时候再将sessionStorage中的数据设进Vuex中,具体代码如下

create(){      //在页面加载时读取sessionStorage里的状态信息    if (sessionStorage.getItem("store")) {      this.$store.replaceState(        Object.assign(          {},          this.$store.state,          JSON.parse(sessionStorage.getItem("store"))        )      );       sessionStorage.removeItem("store");    }    //在页面刷新时将vuex里的信息保存到sessionStorage里    window.addEventListener("beforeunload", () => {      sessionStorage.setItem("store", JSON.stringify(this.$store.state));    });}

这样一个简单的Vuex持久化储存的功能就实现了,浏览器刷新后我们也能读取到Vuex中储存的数据,但是突然有一天,这个功能失效了,页面也没有报错,经过我的一番摸索,最终将问题锁定在了Vuex中储存的$route对象上

$Route路由对象属性

$Route对象上有以下这几个属性

  • path:字符串,对应当前路由的路径,总是解析为绝对路径,如 "/foo/bar"

  • params:一个 key/value 对象,包含了动态片段和全匹配片段,如果没有路由参数,就是一个空对象

  • query:一个 key/value 对象,表示 URL 查询参数。例如,对于路径 /foo?user=1,则有 $route.query.user == 1,如果没有查询参数,则是个空对象

  • hash:当前路由的 hash 值 (带 #) ,如果没有 hash 值,则为空字符串

  • fullPath:完成解析后的 URL,包含查询参数和 hash 的完整路径

  • matched:一个数组,包含当前路由的所有嵌套路径片段的路由记录 。路由记录就是 routes 配置数组中的对象副本 (还有在 children 数组)

问题就出在了$route这个路由对象上,我们在页面刷新时要将Vuex中的数据转换成字符串,再进行储存

    //在页面刷新时将vuex里的信息保存到sessionStorage里    window.addEventListener("beforeunload", () => {      sessionStorage.setItem("store", JSON.stringify(this.$store.state));    });

而store中如果有$route就会报错,这是因为$route包含了一些非序列话的属性,例如函数、循环引用等;
当使用JSON.stringify($route)时,可能会报错TypeError: Converting circular structure to JSON,这是因为$route对象包含循环引用,即对象内部存在相互引用,导致JSON.stringify()无法序列化这个对象,从而抛出这个错误。

解决方法

为了解决这个问题,你可以将$route对象转换成一个新的纯JavaScript对象,然后再进行序列化。可以使用Object.assign()方法来实现这一点,如下所示:

JSON.stringify(Object.assign({}, $route))

这个方法会创建一个新的JavaScript对象,将$route的属性复制到这个新对象中,并返回这个新对象。由于这个新对象只包含纯JavaScript数据,因此可以安全地序列化它。

读到这里,这篇“Vue中$route序列号报错怎么解决”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue中$route序列号报错怎么解决

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue中$route序列号报错怎么解决

本文小编为大家详细介绍“Vue中$route序列号报错怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue中$route序列号报错怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。由于Vuex在浏览
2023-07-06

记一次Vue中$route序列号报错

本文主要介绍了记一次Vue中$route序列号报错,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-16

Vue JSON序列化问题怎么解决

今天小编给大家分享一下Vue JSON序列化问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先,我们需要了解常见
2023-07-06

vue中template报错问题怎么解决

这篇文章主要讲解了“vue中template报错问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中template报错问题怎么解决”吧!template报错写这个纯粹是为了纪
2023-06-30

vue node sass报错怎么解决

vue node sass报错的解决办法:1、查看项目中引用的“node-sass”版本;2、查询“node-sass”对应的“node.js”版本;3、清空下npm,然后重新执行“npm install”安装node即可。
2023-05-14

mysql增加列报错怎么解决

当在MySQL数据库中增加列出现报错时,可以尝试以下解决方法:检查SQL语句:确认SQL语句是否正确,并且列名、数据类型、约束等是否符合数据库表结构的要求。检查权限:确保当前用户有足够的权限来修改表结构。如果没有足够的权限,需要联系数据库管
mysql增加列报错怎么解决
2024-04-09

vue加入cdn报错怎么解决

如果在Vue项目中加入CDN报错,可以尝试以下解决方法:1. 检查CDN链接是否正确:确保在index.html文件中引入的CDN链接是正确的,包括版本号、路径等信息。2. 检查网络连接是否正常:如果网络连接不稳定或者CDN服务不可用,可能
2023-09-05

Vue中Object.assign清空数据报错怎么解决

这篇文章主要介绍“Vue中Object.assign清空数据报错怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue中Object.assign清空数据报错怎么解决”文章能帮助大家解决问题。
2023-06-29

vue-cli5中yarn的报错问题怎么解决

这篇文章主要讲解了“vue-cli5中yarn的报错问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue-cli5中yarn的报错问题怎么解决”吧!vue-cli抛出了错误如下:
2023-06-30

Vue项目报错:parseComponent怎么解决

这篇“Vue项目报错:parseComponent怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue项目报错:pa
2023-06-30

vue-cli3在main.js中console.log()会报错怎么解决

这篇文章主要讲解了“vue-cli3在main.js中console.log()会报错怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue-cli3在main.js中console.
2023-06-30

Vue常见报错问题怎么解决

今天小编给大家分享一下Vue常见报错问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、报错结构报错信息一般会包含
2023-07-02

vue报错webpackJsonp is not defined怎么解决

本篇内容主要讲解“vue报错webpackJsonp is not defined怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue报错webpackJsonp is not defi
2023-07-04

maven报错找不到符号怎么解决

本篇内容介绍了“maven报错找不到符号怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!语言:Java和Scala并用 场景:存在ja
2023-06-03

vue注释template中组件的属性报错怎么解决

这篇文章主要讲解了“vue注释template中组件的属性报错怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue注释template中组件的属性报错怎么解决”吧!注释templat
2023-06-30

Gitlab中3621报错怎么解决

Gitlab是一个广泛使用的开源代码托管平台,但在使用过程中,有时会遇到一些错误和问题。其中,Gitlab 3621错误是比较常见的一种问题。本文将详细介绍Gitlab3621错误的具体解决方法。一、Gitlab 3621错误的原因Gitl
2023-10-22

golang中UNEXPECTEDTOKEN报错怎么解决

在Go语言中,"UNEXPECTEDTOKEN"错误通常是因为代码中的语法错误导致的。解决方法可以按照以下步骤进行:1. 仔细检查代码中的括号、花括号和方括号是否匹配。确保每个开放的括号都有对应的闭合括号。2. 检查代码中的分号是否正确使用
2023-08-15

javascript中window.opener.refresh()报错怎么解决

当使用 `window.opener.refresh()` 报错时,可能有以下几种解决方法:1. 检查是否存在 `window.opener` 对象。在某些情况下,可能没有父窗口,因此尝试在调用 `refresh()` 之前检查 `wind
2023-08-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录