相关文章推荐
英勇无比的移动电源  ·  pythonoserror: ...·  1 周前    · 
朝气蓬勃的紫菜  ·  SPI_InitStructure.SPI_ ...·  1 周前    · 
耍酷的手术刀  ·  Java ...·  8 月前    · 
传参方式 技术点 缺点
  • 通过路由params传参
params 用于组件传递,params刷新页面数据会丢失。
  • 通过路由query传参
query params和query,params传值刷新页面是要消失的,然而query却不会,两者的区别就在于query会把传递的参数显示在url地址中
  • 通过vuex
vuex 通过vuex来存和取你的数据,把你的数据都存在vuex中,然后那个组件需要,直接调用vuex的getters来获取数据就行。

一、通过params传参

先在路由path里那个组件需要传递参数,定义一个参数,用于组件传递,params刷新页面数据会丢失。

先在路由path里那个组件需要传递参数,定义一个参数,用于组件传递,params刷新页面数据会丢失。
第一步:在路由中添加:(/:参数名/:参数名 这里的参数名要和传参时的字段名称一致)router文件中:
path: "/chatView/:user/:password"
第二步:在自己的组件中添加函数,路由切换时传递对应的参数
 > 关键点: 1. 对象中参数:name名字要和路由中的name名称一致; 
           2. params属性要一致,里面传的参数名就是路由中(:)后面的名字
 this.$router.push({
        name: "ProDispatch",
        params: {
          projectId: row.projectId,
          projectNumber: row.projectNumber,
第三步: 然后需要用的组件接受,通过beforeRouteEnter进入路由之前执行的函数
 vm.projectObj 中的projectObj即为当前子页面所需要的属性名,然后赋值
 beforeRouteEnter(to, from, next) {
    // 接收父页面传递的参数,这种方式不会刷新丢掉数据
    next((vm) => {
      vm.projectObj = JSON.parse(to.params.projectObj);

二、通过query来传递参数(常用)

路由传值有两种方式,params和query,params传值刷新页面是要消失的,然而query却不会,两者的区别就在于query会把传递的参数显示在url地址中

第一步:直接在页面中,调用路由切换方法
 关键点:path: 路由路径; query:如下放参数即可
  this.$router.push({
        path: "/project/process",
        query: {
          projectId: row.projectId,
          projectNumber: row.projectNumber,
第二步: 然后需要用的组件接受,通过beforeRouteEnter进入路由之前执行的函数(和第一种相似的获取)
 vm.projectId 中的projectId 即为当前子页面所需要的属性名,然后赋值
 beforeRouteEnter(to, from, next) {
    // 接收父页面传递的参数,这种方式不会刷新丢掉数据
    next((vm) => {
      vm.projectId= to.query.projectId;
      vm.projectNumber = to.query.projectNumber
第二步:在子页面中直接获取,并赋值给对应的属性值 (推荐这个,不会出现获取晚报错的情况)
关键点: this.$route.query.父页面的属性名称
 this.projectId = this.$route.query.projectId;
 this.projectNumber = this.$route.query.projectNumber;

三、通过Vuex来存和获取参数

通过vuex来存和取你的数据,把你的数据都存在vuex中,然后那个组件需要,直接调用vuex的getters来获取数据就行。

第一步: 在你的getters文件中(前提是settings中间对应的方法已经写好,这边只是获取)
projectId: state => state.settings.projectId,
第二步: 在组件中如果想取到的话,直接通过计算属性来用:
computed:{
    projectId(){
       return this.$store.getters.projectId
直接用就行~~~~   this.projectId
传参方式 技术点 缺点 通过路由params传参 params 用于组件传递,params刷新页面数据会丢失。 通过路由query传参 query params和query,params传值刷新页面是要消失的,然而query却不会,两者的区别就在于query会把传递的参数显示在url地址中 通过vuex vuex 通过vuex来存和取你的数据,把你的数据都存在vuex中,然后那个组件需要,直接调用vu path: 'data-detail-edit/:type', component: () => import('@/views/cost/costDetail/index'), name: 'test1' params: { type: 1 }, path: '/detail/:id', //若id后面加?代表这个参数是可选的,即使不传id也不会导致页面无法访问 name: 'detail', component: Detail // 列表中跳转 this.$router.push({
路由传参时,刷新会失去参数,最后使用query传参的方式使参数不丢失,也可以通过储存在sessionStorage中解决。 1.例如我想查看文章,在点击文章后,我们就需要将文章相关的内容通过路由传入具体文章的模板中,这时候我们要使用query传参才能让文章在刷新后不会消失。 2.文章点击后触发函数跳转路由 //item就是要传入的参数 <div @click="toArticel(item)"></div> 3.通过push方法跳转到articleDetail,并传入三个参数
vue路由传参的三种方式以及页面刷新参数丢失问题一、路由传参的三种方式1、传参方式一:params传参2、传参方式二:路由属性配置传参3、传参方式三:query传参二、三种传递方式的区别 一、路由传参的三种方式 1、传参方式一:params传参 这种方式页面刷新参数丢失。 (1)、参数传递页面: // 点击跳转详情页面 toDetail(){ this.$router.push({ name:"AntMemu",//值是在配置路由规则时
使用 vue-router 访问同一路由并刷新页面可以使用 $router.go() 或 $router.replace() 方法。 $router.go() 方法可以跳转到历史记录中的特定偏移量,负数表示后退,正数表示前进。 $router.replace() 方法可以替换当前路由记录,不会留下历史记录。 this.$router.go(0) this.$router.replace({path: '/same-route'}) 如果您想在访问同一路由时重新渲染组件,可以使用key属性 <router-view :key="$route.fullPath"></router-view> 这样就能在访问同一路由时重新渲染组件了。 git ------ fatal: No configured push destination. Either specify the URL from the command-line or co 32001