Vue传递参数不在URL路径上 显示参数的完整方法

本文详细介绍在Vue中如何利用params进行页面间参数传递,避免参数直接暴露在路由中。从路由配置到发送数据,再到接收参数,提供了一套完整的解决方案。

首先,vue中传递参数  可以直接使用

this.$router.push({path:'/taskCenter?id='+id});

但这样有一个明显的错误就是  会把参数显示在路由中。

通过网上查阅资料  发现可以使用  params 来传递参数  当发现这有一个大坑。下面  我来详细讲解  如何使用 params

第一步:

在vue中路由中这样  就是 src/router/index.js  路由中  一定要书写成下面这种格式

export default new Router({
  routes: [

    //发送的页面
    {
      path:'/workTask',
      name:'workTask',
      component: WorkTask
    },
    
    //接收参数的页面  注意这个name
    {
      path:'/taskCenter',
      name:'taskCenter',
      component: TaskCenter
    }
  ]
})

第二步

在workTask页面中 写发送数据

this.$router.push({name:'taskCenter', params:{id: ids, savePath: savePath}})

注意 这个时候push中不在使用path,那是使用了你  要发送个哪个页面的 name值。在这里  我们需要发送个  taskCenter这个页面

第三步

在taskCenter这个页面中接收

mounted: function () {//可操作dom元素
    this.$nextTick(function () {
        //获取传递的参数
        this.requestIds=this.$route.params.id;
        this.requestXmlPath=this.$route.params.savePath;
    })
}

至此你就可以获取你想要的  参数了

Vue.js 中,如果希望实现路由传参但不让参数显示URL 中,可以使用 `params` 方式来完成这一需求。这种方式类似于 HTTP 请求中的 POST 方法,因为参数不会直接暴露在浏览器地址栏中。 以下是详细的说明: ### 使用 Params 实现隐式传参 #### 参数传递 可以通过 `this.$router.push()` 或 `<router-link>` 组件来进行跳转并携带参数。需要注意的是,在使用 `params` 时,必须指定路由名称 (`name`) 而不是路径 (`path`) 来进行导航[^2]。 示例代码如下: ```javascript // JavaScript 动态跳转 this.$router.push({ name: 'user', params: { userId: 123 } }); ``` 或者通过模板语法: ```html <router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link> ``` #### 路由配置 为了使 `params` 生效,需要在定义路由规则时加入动态占位符(`:userId`),这样即使刷新页面也能保留参数值。 ```javascript const routes = [ { path: '/user/:userId', name: 'user', component: UserComponent, }, ]; ``` 如果没有在 `path` 中声明动态部分,则首次加载可能正常工作,但在页面刷新后参数将会丢失。 #### 接收参数 目标组件内部可通过 `$route.params` 对象访问这些隐藏参数[^1]。 ```javascript export default { data() { return { userId: null, }; }, created() { this.userId = this.$route.params.userId; console.log('Received user ID:', this.userId); }, }; ``` --- ### 利用 Props 自动映射 Parameters 另一种更优雅的方法是利用 Vue Router 提供的 `props` 属性自动将 route parameters 映射到组件属性上[^3]。此方法不仅简化了数据绑定过程,还增强了代码可读性和维护性。 例如: ```javascript { path: '/demo/:id/:name/:title', component: DemoComponent, props: true, // 启用布尔模式,默认把所有 param 和 query 都作为 prop 注入给组件实例 } ``` 此时无需手动操作 `$route.params` 即可在子组件内直接接收对应字段: ```vue <template> <div> <p>ID: {{ id }}</p> <!-- 自动获取 --> <p>Name: {{ name }}</p> <p>Title: {{ title }}</p> </div> </template> <script> export default { props: ['id', 'name', 'title'], // 定义所需 props 名称列表 }; </script> ``` 这种方法特别适合于那些仅依赖路由参数渲染逻辑简单的场景下采用。 --- ### 注意事项 尽管上述两种技术都可以有效隐藏传输的数据免受外部窥探,但仍需注意安全性问题——任何客户端层面的技术都无法完全杜绝恶意用户的篡改行为;因此对于敏感信息建议始终采取服务器端验证措施加以保护[^4]。 ---
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值