如何处理vue router 路由传参刷新页面参数丢失

处理Vue Router路由传参刷新页面参数丢失的攻略非常重要,下面是完整的步骤以及代码示例。

1. 使用query传参

在路由中使用query传参,是一种非常常见的方法。但是在使用query传参的时候,需要注意以下几点:

  • 如果地址栏中存在多个参数,为了避免参数重叠,参数名最好使用前缀的方式,例如"user_id=12"可以更改为"user[id]=12"或者"user_id=12&"为"user[id]=12&"。
  • 如果需要刷新页面,可以在地址栏中手动输入query参数,但是如果参数较多,这种方式显然不够优雅,因此可以在页面中使用方法$router.replace()或者$router.push()来进行跳转,并传入参数。

示例代码如下:

<template>
  <div>
    <router-link :to="{ path: '/user/detail', query: { id: user.id } }">查看详情</router-link>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        user: {
          id: 1,
          name: '小明'
        }
      }
    }
  }
</script>

在这个例子中,我们定义了一个user对象,其中包含属性id和name。我们通过在router-link标签中使用query传递id参数,来进行页面跳转。

2. 使用params传参

在路由中使用params传参,直接在路由中添加一个params属性,如下所示:

{
  path: '/user/detail/:id',
  name: 'userDetail',
  component: UserDetail
}

在这个例子中,我们在路由中定义了一个名为id的params,其中值为一个数值。在使用params传参时,我们可以通过$router.replace()或者$router.push()来进行跳转。但与query传参不同的是,在使用params传参时,我们需要注意以下几点:

  • params传参只能通过程序跳转,而不能手动输入参数。
  • 必须通过该组件的$route.params来获取参数值。

示例代码如下:

<template>
  <div>
    <router-link :to="{ path: '/user/detail/' + user.id }">查看详情</router-link>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        user: {
          id: 1,
          name: '小明'
        }
      }
    }
  },
  methods: {
    goToDetail() {
      this.$router.push({ name: 'userDetail', params: { id: this.user.id } })
    }
  }
</script>

在这个例子中,我们同样定义了一个user对象,包含id和name属性。我们通过在router-link标签中利用字符串拼接的方式传递了id参数,和使用方法$router.push()传递params参数,来进行页面跳转。

3. 处理参数丢失

上述示例中,我们通过使用query和params传参,但是在刷新页面后,参数往往会丢失,因为参数只存在于地址栏中,而并不会存在于浏览器的内存中。

我们可以利用localStorage来将参数存储在浏览器的缓存中,当页面刷新后,再将参数取回。同时为了避免页面刷新时无法传递参数,我们还需要在created钩子中对这些参数进行处理。

示例代码如下:

<template>
  <div>
    <router-link :to="{ path: '/user/detail', query: { id: user.id } }">查看详情</router-link>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        user: {
          id: 1,
          name: '小明'
        },
        queryParams: {
          id: ''
        }
      }
    },
    created() {
      if (localStorage.getItem('queryParams')) {
        this.queryParams = JSON.parse(localStorage.getItem('queryParams'))
      }
      this.queryParams.id = this.$route.query.id || this.queryParams.id
      localStorage.setItem('queryParams', JSON.stringify(this.queryParams))
    }
  }
</script>

在这个例子中,我们在data属性中添加了queryParams对象,用于存储我们需要传递的参数。在created钩子中,我们首先通过localStorage来获取之前缓存的参数值,然后使用$this.$route.query.id || this.queryParams.id来判断用户是否输入了参数。最后再将处理过后的参数存储回localStorage中。

通过这种方式,我们可以在页面刷新时,保留参数值。同时,在进行页面跳转时,我们依然使用query或者params传参的方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何处理vue router 路由传参刷新页面参数丢失 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 解析JavaScript中的标签语句

    解析JavaScript中的标签语句 在JavaScript中,标签语句指的是一种特殊的语法结构,可以将一个普通语句放在标签后面,使得在代码执行时可以通过标签来跳转到特定的位置。标签语句在一些需要复杂程序流程控制的场景下是非常有用的,下面详细讲解如何解析JavaScript中的标签语句。 标签语句的语法 标签语句的语法结构是:标签名+冒号+语句。可以将其表示…

    JavaScript 2023年5月27日
    00
  • javaScript日期工具类DateUtils详解

    JavaScritp日期工具类DateUtils详解 概述 JavaScript是一种广泛使用的动态编程语言,该语言可以用于浏览器和Node.js环境。在使用JavaScript开发web应用程序的过程中,日期处理是一个很常见和常用的功能。JavaScript内置有Date对象,而DateUtils是一种自定义的日期工具类,它提供了一系列有用的日期处理函数。…

    JavaScript 2023年5月27日
    00
  • javascript中Object使用详解

    Javascript中Object使用详解 简介 在Javascript中,Object是所有类的根源,几乎所有的对象都是Object的实例,Object可以看做是Javascript中所有类中共有的属性和方法的集合。 在本文中,我们将详细介绍在Javascript中如何使用Object。 基本语法 创建Object有两种方式:使用Object构造函数或使用…

    JavaScript 2023年5月27日
    00
  • js一维数组、多维数组和对象的混合使用方法

    一、一维数组和对象的混合使用方法 可以在对象中嵌套数组,也可以将数组元素赋值为对象。在JS开发过程中,常常会将获取的数据以数组形式存储,或者将指定的某些数据进行组成字典格式,以方便进行读取。 1.在对象中嵌套数组 在对象中嵌套数组,可以将数据更好的组织起来,一次性获取到所有的数据。 示例代码: let student = { name: "Tom&…

    JavaScript 2023年5月27日
    00
  • 纯js实现动态时间显示

    以下是详细讲解“纯JS实现动态时间显示”的完整攻略。 一、准备工作 首先我们需要一个HTML页面,并在页面中添加一个用于显示时间的容器,例如: <!DOCTYPE html> <html> <head> <title>动态时间显示</title> </head> <body>…

    JavaScript 2023年5月27日
    00
  • asp.net中使用cookie传递参数的方法

    针对“asp.net中使用cookie传递参数的方法”,我将分为以下几个部分进行说明: 什么是cookie? 如何创建cookie? 如何读取cookie? 如何删除cookie? 使用cookie传递参数的示例 什么是cookie? cookie是一种用于存储浏览器访问网站时的小文件。当用户访问一个网站,服务器会将cookie文件存储到用户的计算机上,当用…

    JavaScript 2023年6月11日
    00
  • jquery根据锚点offset值实现动画切换

    想要实现根据锚点offset值实现动画切换的效果,需要经过以下步骤: 1. 监测锚点的click事件 首先,我们需要为锚点(a标签)添加click事件的监听。当用户点击锚点时,我们可以获取到被点击锚点的href属性值,即所要跳转到的锚点的标识符,例如#section1。 示例代码: $(document).on(‘click’, ‘a’, function …

    JavaScript 2023年6月10日
    00
  • node.js Web应用框架Express入门指南

    Node.js Web应用框架Express入门指南 Express是基于Node.js开发的Web应用框架,它提供了一组API来帮助开发者快速地创建Web应用程序。本指南将介绍如何入门使用Express,包括安装、配置、路由、模板引擎等方面的内容。 安装Express 首先需要安装Node.js和npm。安装完成后,可打开终端窗口,输入以下命令安装Expr…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部