vue 通过query和params两种跳转传参方法打开新的页面并传参 还有一些其他方法

本文详细介绍了Vue.js中路由传参的query和params两种方法,包括各自的使用场景和代码示例。query参数会显示在URL中,而params参数则不会。同时,还探讨了这两种方式的区别,以及如何在目标页面接收参数。此外,还提到了通过js和jq的跳转方法作为补充。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近,项目完结想写一些总结性的的东西,今天发现vue页面跳转页也有好几种,最简单的a标签跳转,这里就不在阐述了,有query和params两种跳转传参方法,还有一些其他方法。
query跳转传参方法:
第一种写法:提到的是通过router携带query的方法进行跳转,在链接后面添加query参数:
http://localhost:8888/#/fruits?data=111
需要传数据的页面:

<template>
  <div>
    <el-form :inline="true" :model="formInline" class="demo-form-inline">
      <el-form-item label="审批人">
        <el-input v-model="formInline.user" placeholder="审批人"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="onSubmit">查询</el-button>
      </el-form-item>
    </el-form>
	</div>
</template>
<script> 
  export default {
    data(){
      return {
        formInline: {
          user: ''
        }
      }
    },
    methods: {
      onSubmit(){
        this.$router.push({
          path: "/fruits",
          query: {
            data:this.formInline.user ,
          },
        });
      }
	  },
  }
</script>

跳转到的页面:

<template>
  <div>
    <span>我是fruits页面,您输入的审批人是{{data}}</span>
	</div>
</template>
<script>
  export default {
    data(){
      return{
        data:""
      }
    },
    created(){
      this.data = this.$route.query.data
	  },
  }
</script>

第二种写法:

<router-link :to="{ path: '/fruits', query : { data:formInline.user } }">查询</router-link>

接参数的方法一样
在这里插入图片描述

params传参方法:
第一种:提到的是通过router携带params的方法进行跳转,链接后面不添加params参数:
http://localhost:8888/#/fruits
需要传数据的页面:

<template>
  <div>
    <el-form :inline="true" :model="formInline" class="demo-form-inline">
      <el-form-item label="审批人">
        <el-input v-model="formInline.user" placeholder="审批人"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="onSubmit">查询</el-button>
      </el-form-item>
    </el-form>
	</div>
</template>
<script> 
  export default {
    data(){
      return {
        formInline: {
          user: ''
        }
      }
    },
    methods: {
      onSubmit(){
        this.$router.push({
          name: "fruits",
          params: {
            data:this.formInline.user ,
          },
        });
      }
	  },
  }
</script>

跳转到的页面:

<template>
  <div>
    <span>我是fruits页面,您输入的审批人是{{data}}</span>
   </div>
</template>
<script>
  export default {
    data(){
      return{
        data:""
      }
    },
    created(){
      this.data = this.$route.params.data
	},
  }
</script>

第二种方法:

<router-link :to="{ name: 'fruits', params: { data:formInline.user } }">查询</router-link>

接参数的方法一样
在这里插入图片描述

query和params的区别:
query参数是path,跳转到的页面上有query的参数。
params参数是name,跳转到的页面上没有参数。

其他方法:
js方法:window.open(url, ‘_blank’) // 打开一个新的页面
jq方法:$(“.name”).attr(“href”, url); //跳转到url页面不打开新页面

Vue.js中,实现页面跳转传递参数有多种常见的方式,以下是其中的八种方法: 1. **路由链接** (vue-router): 使用`<router-link>`标签,配合`:params`或`v-bind:path`属性,例如: ```html <router-link :to="{ name: 'yourRouteName', params: { id: yourParam } }">跳转</router-link> ``` 2. **this.$router.push()**: 直接操作`vue-router`实例,手动指定路径参数: ```javascript this.$router.push({ path: '/your-path/:id', params: { id: yourParam } }) ``` 3. **this.$route.replace()** 或 `replace()`: 如果不想保留当前历史记录,可以替换导航: ```javascript this.$router.replace({ ... }) ``` 4. **Vue组件内部触发**: 通过$emit触发自定义事件,外部监听处理: ```javascript this.$emit('go-to-page', { param: yourParam }) parentComponent.vue.$on('go-to-page', ({ param }) => { // 跳转逻辑 }); ``` 5. **Vuex状态管理**: 存储在store里,然后在actions或mutations中跳转: ```javascript this.$store.dispatch('navigate', { id: yourParam }) ``` 6. **动态路由守卫(gaurd)**: 在beforeEnter或other生命周期钩子中处理跳转参数: ```javascript router.beforeEach((to, from, next) => { if (/* 条件 */) { next({ ...to, params: { ...to.params, yourParam: yourNewParam } }) } }) ``` 7. **使用axios或fetch**: 发送异步请求到后端,后端再做路由转发: ```javascript axios.post('/api/redirect', { id: yourParam }).then(response => { window.location.href = response.data.url; }); ``` 8. **利用Vue Router的query参数**: 可以在URL查询字符串中携带数据,如: ```javascript this.$router.go({ name: 'yourRoute', query: { key: yourParam } }) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值