vue-router如何实时动态替换路由参数(地址栏参数)

目录
  • 实时动态替换路由参数(地址栏参数)
    • 应用场景
    • 用法如下
    • replace()和push() 的区别
  • 动态替换路由-Url参数
    • 安装webpack-merge
    • 引入包
    • 操作参数

实时动态替换路由参数(地址栏参数)

应用场景

例如:

页面上有多个tab,点击不同的tab,跳转到不同的页面上去,再次返回的时候,需要知道上次点击的是哪个tab,这样不用存缓存,直接改路由参数,然后直接返回就可以了;

用法如下

import merge from 'webpack-merge';
//如果路由没有参数name,就新增一个参数,如果有的话,就是修改name的值
//可以修改多个参数
this.$router.push({
    query:merge(this.$route.query,{'name':'小米'})
});
this.$router.replace({
  query: merge(this.$route.query, {'name':'小米'})
});
this.$router.push({
   query: merge(this.$route.query, {
     'name': '小米',
     'age':'9'
   })
 });
 
this.$router.replace({
   query: merge(this.$route.query, {
     'name': '小米',
     'age':'9'
   })
 });
//替换所有的参数
this.$router.push({
    query:merge({},{'name':'小米'})
}) 
this.$router.replace({
    query:merge({},{'name':'小米'})
}) 

replace()和push() 的区别

1. this.$router.push() 

描述:此方法会向history栈添加一个记录,返回this.$router.back()会返回到上一个页面。

2.this.$router.replace() 

描述:此方法不会向history里面添加新的记录,返回this.$router.back()会直接跳转到上上一个页面。

动态替换路由-Url参数

动态替换和修改URL的参数,可使用webpack-merge包来完成。

安装webpack-merge

npm install webpack-merge --D

引入包

import merge from 'webpack-merge'

操作参数

新增

// 新增一个id
 this.$router.push({
    query:merge(this.$route.query,{'id':'123'})
})

修改

// 修改id
this.$router.push({
    query:merge(this.$route.query,{'id':'456'})
})

替换

// 替换所有参数为userId
this.$router.push({
    query:merge({},{'userId':'xxx123456'})
})

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue router动态路由设置参数可选问题

    在日常工作中,我们需要将匹配到的所有路由,映射到一个组件上. 如下代码想要达到的效果: 不传page和id,则映射到user默认list页面 传page和id,根据page不同,显示不同的页面 问题 使用以下代码片段是不能实现以上效果的,因为默认情况下page和id参数是必传的,如果不传参数,则会根据默认路由跳转到home页面 new Router({ routes: [ { path: '/user/:page/:id', name: 'User', component: () => impo

  • Vue--Router动态路由的用法示例详解

    目录 官网网址 动态路由概述 同一路由多个参数 path-to-regexp Api用法 1. pathToRegexp() 2.exec() 3. parse() 4. compile() 本文介绍Vue-Router中动态路由的用法. 官网网址 Vue官网:带参数的动态路由匹配 | Vue Router 动态路由概述 说明 很多时候,我们需要将给定匹配模式的路由映射到同一个组件.例如,我们可能有一个 User 组件,它应该对所有用户进行渲染,但用户 ID 不同.在 Vue Router 中,

  • vue如何实现动态改变地址栏的参数值

    目录 动态改变地址栏的参数值 监听url地址栏参数变化 1.传递参数 2.监听参数变化 动态改变地址栏的参数值 点击切换Tab,通过watch监听,在地址栏修改对应得active参数,这样刷新后还能保持最后浏览的tab watch: {     active (newValue) {       let query = this.$router.history.current.query;       let path = this.$router.history.current.path;  

  • Vue 动态设置路由参数的案例分析

    在vue中 可以动态设置路由参数: 1.使用this.$router.go(),与js histroy.go() 用法一直,前进1,后退-1,当前页面:0 注意 使用go时 必须是已经有访问历史记录了 案例: <template> <div> <button @click="goht">后退<button> <br/> <button @click="goqj">前进<button>

  • vue-router如何实时动态替换路由参数(地址栏参数)

    目录 实时动态替换路由参数(地址栏参数) 应用场景 用法如下 replace()和push() 的区别 动态替换路由-Url参数 安装webpack-merge 引入包 操作参数 实时动态替换路由参数(地址栏参数) 应用场景 例如: 页面上有多个tab,点击不同的tab,跳转到不同的页面上去,再次返回的时候,需要知道上次点击的是哪个tab,这样不用存缓存,直接改路由参数,然后直接返回就可以了: 用法如下 import merge from 'webpack-merge'; //如果路由没有参数n

  • 全面解析vue router 基本使用(动态路由,嵌套路由)

    路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about 按钮,页面中就要显示about 的内容.Home按钮  => home 内容, about按钮 => about 内容,也可以说是一种映射. 所以在页面上有两个部分,一个是点击部分,一个是点击之后,显示内容的部分. 点击之后,怎么做到正确的对应,比如,我点击home 按钮,页面中怎么就正好能显示home的内容.这就要在js 文件中配置路由. 路由中有三个基本的概念 route,

  • vue router学习之动态路由和嵌套路由详解

    本文主要参考:https://router.vuejs.org/zh-cn/essentials/nested-routes.html 本文的阅读前提是已经能够搭建一个vue前台程序并且运行.如果还么有搭建可以参考文章: http://www.jb51.net/article/111650.htm 好,下面上货. 首先介绍一下动态路由. 动态路由按照我的理解,就是说能够进行页面的跳转,比如说:下面的这个页面中: <template> <div id="app">

  • Vue Router中应用中间件的方法

    中间件是我们在软件开发中的一个古老而强大的概念,当我们在应用程序中使用路由相关模式时,它非常有用. 如果您不太了解中间件的含义,Nodejs框架Express里的中间件可以帮助您了解它们的工作原理. 但是,中间件仅适用于后端吗? 不,当应用程序中有路由时,中间件在前端或后端中就会非常常见.比如现在流行的单页应用程序. 有一些示例可以说明,何时可以使用中间件: 不允许未登录用户访问您的网页. 仅允许某些类型的用户查看页面(角色:管理员,作者等) 数据采集. 重置设置或清理存储空间. 限制访问用户的

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

    概述 常见场景:点击列表的详情,跳转到详情内页,在内页根据传递的参数获取详情数据. 路由传参一般有如下几种方式,下面主要介编程式导航 router.push 的传参方式: 方法一:通过 params 传参 路由配置如下: { path: '/detail/:id', //若id后面加?代表这个参数是可选的 name: 'detail', component: Detail } 通过 $router.push 中 path 携带参数的方式 // 列表中的传参 goDetail(row) { thi

  • vue项目创建步骤及路由router

    1.创建一个vue项目步骤 (windows环境下).创建vue项目前,检查系统是否具备创建项目的条件(是否已经安装好了node.js.webpack.vue-cli).cmd打开终端. 1.1 如果还没安装node.js, 则先安装node.js,安装完成后,查看node版本 node -v 1.2 安装淘宝镜像, 安装完成后查看npm版本:npm -v npm install -g cnpm --registry=https://registry.npm.taobao.org 1.3 安装w

  • Vue Router路由hash模式与history模式详细介绍

    目录 一.前言 二.hash模式 三.history模式 一.前言 对于hash模式和history模式,最直接的区别就是地址栏带不带"#"号了. vue脚手架搭建的项目的路由默认是hash模式. hash模式: 创建路由实例时,添加mode:"history"属性,即可使用history模式. const router = new VueRouter({ routes, mode: "history" }) history模式: 二.hash模

  • vue如何清除地址栏参数

    目录 vue清除地址栏参数 获取地址栏参数并且截取 vue清除地址栏参数 第一种: this.$router.push({ query: {} }); 第二种: let path = this.$route.path; //先获取路由路径 this.$router.push(path); //再跳转路由路径,query参数没带过去,所以被清除了 获取地址栏参数并且截取 今天写项目遇到这样一个问题,因为我是单独写的三个页面,我那个页面获取数据是要获取到上个页面传过来的参数才能进行请求,因为刚开始写

  • vue router动态路由下让每个子路由都是独立组件的解决方案

    vue-router 之动态路由 vue-router官网上面是这样说的 // 带查询参数,变成 /register?plan=private router.push({ path: 'register', query: { plan: 'private' }}) 然后,我就这样写了: this.$router.push({path:'manage', query: {id: 'tasklist'}})1 结果很明显,失败了.然后我就默默的再次看了一下官网,结果发现了这句话 // 命名的路由 r

随机推荐