Vue项目中路由动态传参功能相关实现

vue中如何实现动态路由传参? 一、vue路由基础用法: 1 .安装 npm install vue-router --save 2 .main.js中 //Vue路由:引入 import VueRouter from 'vue-router' Vue.use(VueRouter) //Vue路由:引入并创建组件 import BYHome from './components/BYHome.vue' import BYNews from './components/BYNews.vue' import HelloWorld fr 阅读详情

这两天在项目中有个新需求:在当前页面中的有很多数据,过滤数据的条件有时间,页码,类型,id搜索….,假设我在页面中选择的某段时间,某个类型,现在我需要把握当前看到的信息完全展现给另一朋友。
server端环境:时间和页码可以动态的传递到后端

一. 初步解决方案

刚看此需求首先想到的是vue—router的动态传参,于是就开始码代码。将过滤条件相关的变量动态的传说路由中
  this.$router.push({query:{date:..,page:..}})

首次进入页面时,取出路由中的query参数

this.$route.query

整体思路就是这样,测试发现个严重的问题,
1.页面刷新的问题,在浏览中手动更改query时页面不会刷新(vue路由问题,下面会说到)
查阅官方文档发现文档中有此段话:记住参数或查询的改变并不会触发进入/离开的导航守卫。你可以通过观察 $route 对象来应对这些变化,或使用 beforeRouteUpdate 的组件内守卫。
2.项目是单页面,组件之间传值(同级组件)是非常大问题,我需要在每个页面中写一遍代码(不能忍)


问题1按照官方给出的方式解决:

watch:{
"$route":function(val,oldVal){
...
location.reload()
...
}
}

路由刷新问题搞定


问题2 暂时写个公共方法来解决


在次测试时发现,只要我路由参数变化都会重新刷新整个页面(我只想重新请求数据),思考解决方法…..

二.优化方案

过程:为了达到我想要的效果,把路由变化的过程梳理一下。

  1. 需要全局的变量来存储query中的值(Vuex)
  2. 需要一个开关来控制是否刷新页面(Vuex)
  3. 初始化页面时将路由中的query下发到页面相对应的变量
  4. 页面参数变化是动态的改变路由
    理清楚路由变化之后开始实现
    *存储路由query和控制是否刷新页面的值都用Vuex来实现
new Vuex.Store({
    state:{
     //控制页面刷新
     isRefresh: true,
      //存储路由中query的值
     queryParams:{}
      },
    mutations: {
    test (state) {
      // 变更状态
      state.queryParams = {
      id:"test"
      }
          },
    test2(state) {
      state.isRefresh = "test"
   }
  }
  })

初始化页面时将路由中的query下发到页面用公共方法**

//obj传入当前页面的data即(this.$data确保query中参数key都是data的属性值)
//queryParams传入当前页面路由的query值

Vue.prototype.$initData=function(obj,queryParams){

     //使用双重循环给this.$data中的属性赋值
}

页面参数变化是动态的改变路由写个公共方法给路由赋值就行了

三 总结


这个功能的实现是我对vue有了更加深入的了解,vue能从众多的前端框架中脱颖而出跟他与时俱进的开发理念,以及前端项目中的各种相关生态的良好支持有着很大的关系。之前刚接触vue时,就被他前端项目的一键部署以及通俗易懂的开发文档深深的吸引。越是深入了解他的本质,就越发的觉得vue设计思想的wonderful…….

前端笔记1-vue:路由相关内容 本篇内容要记录vue项目中路由器的工作模式、命名路由、嵌套路由、路由传参、编程式路由和路由重定向等的相关内容。希望能通过记录,累积知识。 阅读详情

相关推荐

vue路由跳转之【编程式导航与传参】

vue路由有两种跳转方式 ---->编程式与声明式,本文重点讲解vue路由的【编程式导航 】【编程式导航传参 ( 查询参数传参 & 动态路由传参 )】等内容,并结合具体案例让小伙伴们深入理解 ,彻底掌握!

共同学习,共同成长 2747

vue-element-admin项目学习笔记(4)路由分析二:动态路由及permission.js

这部分定义的`asyncRoutes`,就是动态路由,用户可用路由条数,是计算出来的,然后将计算出来的当前用户路由,渲染到菜单栏上

学习,是熵减的最有效途径。 2398

路由传参结合数据请求

web前端 中

vue+iviewui实现动态路由添加,并解决刷新页面空白和页面死循环

vue+ivewui实现动态路由添加,并解决刷新页面空白和页面死循环 困扰了好几天的动态路由问题终于解决了,参考过很多篇文章,在此感谢各位博主的分享。 现将个人新的整理如下,希望能给大家带来更多的帮助。 一.动态路由的添加 1.准备工作 //登录接口返回数据格式 { routes:[], token:'', userInfo:{} } //静态路由(routes.js) /** * 在主框架内显示 */ const frameIn = [ { path: '/',

liduote的博客 2194

iView admin2.0动态路由按钮级权限实现

iView admin2.0 从后端数据加载路由实现。包含前端变动代码、数据库脚本、java路由权限组装工具类代码

vue iview实现动态路由和权限验证功能

主要介绍了vue iview实现动态路由和权限验证功能,动态路由控制分为两种:一种是将所有路由数据存储在本地文件中,另一种则是本地只存储基本路由,具体内容详情大家参考下此

Vue中 Vue.prototype 详解及使用

我们可能会在很多组件里用到数据/实用工具,但是不想污染全局作用域。这种情况下,可以通过在原型上定义它们使其在每个 Vue 的实例中可用。 1. 基本示例 在main.js中添加一个变量到 Vue.prototype Vue.prototype.$appName = 'My App' 这样 $appName 就在所有的 Vue 实例中可用了,甚至在实例被创建之前就可以 new Vue({ beforeCreate: function () { console.log(this.$appName)

明天也要努力的博客 5万+

【GD32F407】i2c主机发送,从机中断接收

前言 现在手里负责的一个项目需要用i2c和主芯片进行通信主动发送,中断接收,这就需要支持i2c主机模式和从机模式,先查看原理图 这里我们用到了两条i2c总线进行数据的交替传输,避免在使用一条总线是发送数据和接收数据冲突 初始化i2c控制器 s32_k i2cDevInit(u8 byBusId, TI2cBus *pTI2cBus) { //PCLK = 36000000 BOOL retFlg = FALSE; int I2xSCL = pTI2cBus->byFastMode ?

Enosji的博客 6246

Vuex大全

1

Gaoler7的博客 620

解决Anaconda环境下catkin_make编译报错:Python路径冲突与empy模块缺失

本文详细分析了在Anaconda环境下使用catkin_make编译时出现的Python路径冲突与empy模块缺失问题,提供了快速解决方案和永久性环境配置方法。通过显式指定Python解释器路径或调整Anaconda配置,有效解决编译报错问题,适用于ROS开发与科学计算并行的场景。

weixin_28829629的博客 353

三角洲行动交易行自动化脚本

DFMarketBot - 三角洲行动自动交易助手 DFMarketBot是一款专为三角洲行动游戏设计的交易行自动化工具,通过OCR识别和鼠标模拟实现自动补卡、补子弹功能。项目采用Python开发,支持Windows平台,主要功能包括: 自动检测并购买指定物品(房卡/子弹) 价格监控与智能购买(低于设定价格自动下单) 自定义购买数量与次数限制 支持窗口/无窗口两种游戏模式 使用前需安装Tesseract OCR引擎并配置游戏为1920*1080分辨率。通过JSON文件可灵活配置监控物品清单、理想价格和购买策

愤怒的阿木木的博客 3万+

import vue from vue_深入Vue-router最佳实践

前言最近再刷Vue周边生态的官方文档,因为之前的学习都是看视频配合着文档,但主要还是通过视频学习,所以很多知识点都没有了解,至从上次刷了Vuex的官方文档就体会到了通读文档的好处,学习一门技术最好的还是去看它的官方文档,这样对于这门技术你就会了解的比较透彻,知识点也比较全面,所以在刷完Vuex文档之后写了篇《深入Vuex最佳实践》,然后花了两天(上班没时间摸鱼,都是晚上学习)的时间刷完了Vue-r...

weixin_39517546的博客 1675

环境配置 |Jupyter lab/Jupyter Notebook 安装与设置

ipynb使用Jupyterlab/Jupyter Notebook 来编写程序时的文件,在使用时,可以现转换为标准的.py的python文件。

weixin_44649780的博客 5772

Vue 路由(Router)详细介绍(切换,传参,通信)

在一个vue项目中,免不了对组件(页面)进行切换与跳转。而用 Vue.js + Vue Router 创建单页应用,感觉很自然:使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 Vue Router 添加进来,我们需要做的是,将组件 (components) 映射到路由 (routes),然后告诉 Vue Router 在哪里渲染它们。 话不多说,直接开始!!! 准备工作 在使用脚手架vue-cli3创建(vue create projectName)一个vue项目时,

高大志leo的博客 1万+

UDP_千兆光通信(四)Tri Mode Ethernet MAC ip核

其中 Transmit Engine 从 AXI-Stream TX 接口接收数据,并添加前导码 Preamble、帧起始界定符 SFD、帧校验序列 FSC 等,并在必要时(长度小于最小 MAC 帧长度)填充数据,因此在使用 TEMAC 时,MAC 帧的这几个部分就不需要我们自己添加了(不过其他的 MAC 帧部分,可选的帧过滤器 Frame Filter 用于过滤与一组可配置过滤器匹配的帧,一般用于过滤掉目的 MAC 地址与本设备不一致的帧,TEMAC 默认开启帧过滤器。默认值为使用64位宽的计数器。

lzr232的博客 1775

极智AI | 详解 ViT 算法实现

大家好,我是极智视界,本文详细介绍一下 ViT 算法的设计与实现,包括代码。

极智视界 5604

Web前端 ---- 【Vue】Vue路由传参(query和params)

路由的使用以及query传参和params传参

weixin_68854196的博客 3619

NVIDIA Isaac GR00T N1.5 人形机器人强化学习入门教程(四)Lerobot、宇树 G1 等不同形态机器人微调教程

本笔记本是一份关于如何在新的数据集上对GR00T-N1预训练模型进行微调的教程。

2506_90492529的博客 1667

VUE3 路由传参

1.声明式导航与传参传统情况下的跳转页面是<a>标签;因为vue3主要是单页面应用;所以是页面内跳转;我们点击导航栏,就会出现单页面的跳转;跳转的出口是<router-view>;那控制跳转的方式(也就是知道要跳转到哪个页面)就是<router-link>;其本质还是 a 标签1.1注意router-link 会⾃动给当前导航添加两个类名,有什么区别呢?答:1、: 模糊匹配: 精确匹配。

qincjun的博客 1389

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Vue路由

路由的概念,路由的实现,路由的模式,声明式导航,编程式导航,路由重定向,404路由,嵌套路由,动态路由,路由的传参方式,

qq_45799465的博客 2万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

vue路由(vue-router)面试题

文章目录1.mvvm 框架是什么?MVVMMVCMVPMVVM模式的优点以及与MVC模式的区别2.vue-router 是什么?它有哪些组件3.active-class 是哪个组件的属性?active-class使用方法4.怎么定义 vue-router 的动态路由? 怎么获取传过来的值获取传过来的值5.vue-router 有哪几种导航钩子?1.导航钩子的作用2.植入路由导航的方式最后是完整的导航解析流程:6.$route 和 $router 的区别7.vue-router响应路由参数的变化8.vue-r

hrj970808的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Vue2电商前台项目(一):项目前的初始化及搭建

文件夹:放置项目的依赖public文件夹:一般放置的是静态资源(图片),需要注意:放在public文件夹中的静态资源,webpack进行打包的时候,会原封不动打包到dist文件夹中,不会当做一个模块打包到 JS 里面src文件夹​ —assets文件夹:一般放置的是静态资源(一般放置多个组件公用的的静态资源),需要注意:放置在assets文件夹里面的资源,webpack打包的时候,会把静态资源当做一个模块,打包到JS文件里面​ —components文件夹:一般放置的是非路由组件(全局组件)

weixin_42044763的博客 5500

Vue——路由:动态路由

定义动态路径 /user/:id。:通过 < router-link> 跳转到不同用户的路径(如 /user/1、/user/2)。:接收并渲染动态参数 id。

weixin_63215361的博客 1953
上一篇: chrome devtools 常用功能总结
下一篇: vue.js的使用总结(2)原理篇
厌笔不萧生
博客等级 码龄10年 5粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值