首页 > 其他分享 >vue中 通过 params 传递对象参数

vue中 通过 params 传递对象参数

时间:2025-01-20 09:43:09浏览次数:1  
标签:vue const key2 传递 参数 value2 value1 params

vue中 通过 params 传递对象参数
在 Vue 中,通过路由的 params 传递参数是一种常见的需求,尤其是在使用 Vue Router 时。params 是一种动态路由参数,通常用于传递路径中的变量,例如 /user/:id。然而,params 本身并不支持直接传递对象类型的数据。如果需要传递对象参数,可以通过以下几种方式实现:

方法 1:使用 query 参数

query 参数是 URL 的查询字符串部分,可以直接传递对象数据。Vue Router 会自动将对象序列化为查询字符串。

// 跳转到目标路由,并传递对象参数
this.$router.push({
  name: 'TargetRoute',
  query: { key1: 'value1', key2: 'value2' }
});

在目标路由中,可以通过 this.$route.query 获取参数:

export default {
  mounted() {
    console.log(this.$route.query); // { key1: 'value1', key2: 'value2' }
  }
};

方法 2:使用 params 传递 JSON 字符串

如果需要通过 params 传递对象,可以将对象序列化为 JSON 字符串,然后在目标路由中解析。

发送端

const obj = { key1: 'value1', key2: 'value2' };
this.$router.push({
  name: 'TargetRoute',
  params: { data: JSON.stringify(obj) }
});

接收端

export default {
  mounted() {
    const data = JSON.parse(this.$route.params.data);
    console.log(data); // { key1: 'value1', key2: 'value2' }
  }
};

方法 3:使用 Vuex 或其他状态管理

如果需要在多个组件或路由之间共享数据,可以使用 Vuex 或其他状态管理库来存储对象数据。

Vuex 示例

  1. 定义 Vuex 状态

    // store.js
    import { createStore } from 'vuex';
    
    export default createStore({
      state: {
        sharedData: null
      },
      mutations: {
        setSharedData(state, data) {
          state.sharedData = data;
        }
      }
    });
    
  2. 发送端

    import { useStore } from 'vuex';
    
    const store = useStore();
    const obj = { key1: 'value1', key2: 'value2' };
    
    store.commit('setSharedData', obj);
    this.$router.push({ name: 'TargetRoute' });
    
  3. 接收端

    import { useStore } from 'vuex';
    
    export default {
      setup() {
        const store = useStore();
        const sharedData = store.state.sharedData;
    
        console.log(sharedData); // { key1: 'value1', key2: 'value2' }
      }
    };
    

方法 4:使用 localStoragesessionStorage

如果数据不需要在组件之间共享,但需要在页面刷新后仍然可用,可以使用 localStoragesessionStorage

发送端

const obj = { key1: 'value1', key2: 'value2' };
localStorage.setItem('sharedData', JSON.stringify(obj));
this.$router.push({ name: 'TargetRoute' });

接收端

export default {
  mounted() {
    const data = JSON.parse(localStorage.getItem('sharedData'));
    console.log(data); // { key1: 'value1', key2: 'value2' }
  }
};

总结

  • 如果需要传递简单的键值对数据,推荐使用 query 参数。
  • 如果需要传递复杂对象,可以通过 params 传递 JSON 字符串,或使用 Vuex、localStoragesessionStorage
  • 根据你的需求选择合适的方法。

标签:vue,const,key2,传递,参数,value2,value1,params
From: https://www.cnblogs.com/sunny3158/p/18680792

相关文章

  • 基于SpringBoot+Vue的智慧党建平台设计与实现
    ......
  • 1-1.Vue2 前端开发 - 富文本编辑器 wangEditor 引入
    一、富文本编辑器wangEditor1、富文本概述富文本(RichText)是一种包含丰富格式和样式的文本富文本不仅限于纯文字,还可以包含字体、颜色、大小、图片、链接、表格等多种元素与纯文本(PlainText)相比,富文本提供了更丰富的视觉和功能表现富文本的常见应用场景有:网页内......
  • vue3使用pinia中的actions,需要调用接口的话
    1.Pinia简介Pinia是Vue3推荐的状态管理库,类似于Vuex,但其设计更简单和灵活。使用Pinia的actions来调用接口可以更清晰地管理异步操作和状态变化。2.安装和配置Pinia首先,需要安装Pinia:npminstallpinia​  在项目的入口文件(通常是 main.js或 main.ts)中配置Pinia......
  • JMeter 中的 “R参数” 详解
    JMeter中的“R参数”详解在JMeter中,“R参数”通常指的是与JMeter的命令行运行和结果报告相关的参数,特别是-r和-R参数,以及与结果文件和报告生成相关的参数。虽然单独一个“R”并不能直接构成JMeter的参数,但是结合上下文,我们通常理解为以下几种情况:1.分布式测试......
  • VUE最新状态管理工具
    大家好,我是程序视点的小二哥!前言在VUE项目开发中,一些数据常常被多个组件频繁使用,为了管理和维护这些数据,就出现了状态管理模式。今天小二哥要给大家推荐的不是VueX,而是称为新一代的状态管理工具的Pinia.js。添加图片注释,不超过140字(可选) 关于Pinia.jsPinia.js由Vue.......
  • 深入探索 Vue.js 最新组件开发技术:实现动态模块加载器
    随着前端技术的飞速发展,Vue.js的组件化开发理念已经被广泛应用。今天,我们将探索一种最新的技术模式:动态模块加载器在Vue.js中的实现。这种模式可以提升应用的性能,并简化大型项目的组件管理。为什么需要动态模块加载器?在传统的Vue.js开发中,我们经常通过import和requir......
  • 在 Vue 3 中实现插件化架构:设计可扩展的前端插件系统
    随着前端项目的复杂性不断提升,模块化和可扩展性在架构设计中的重要性愈加突出。Vue3的CompositionAPI和插件机制为我们实现插件化架构提供了便利。本文将深入探讨如何在Vue3中构建一个高效、灵活的插件系统,为大型前端项目的扩展性打下基础。为什么选择插件化架构?插件......
  • 计算 SAMOut V3 在将词汇表从1万 增加到6千万的情况下能够减少多少参数
    当我们将词汇表从60,000,000(六千万)减少到10,000时,实际上是在缩小模型的词嵌入层及其共享的语言模型头(LMHead)的规模。这将导致参数量显著减少。我们可以通过以下步骤来计算具体的参数减少量。参数量减少计算假设条件:原词汇表大小......
  • jest.spyOn 如何监听vue的 created生命周期
    jest.spyOn是Jest测试框架提供的一个功能,用于创建一个间谍(spy)来监视对象上的方法调用。然而,直接使用jest.spyOn来监听Vue组件的生命周期钩子如created并不是最直观的方法,因为这些钩子并不是组件实例上的公开方法,而是由Vue框架内部管理的。为了测试Vue组件的生命周期......
  • springboot+vue高校年终考核材料归档平台研究与设计 64x25
    目录系统实现截图开发核心技术介绍技术栈核心代码部分展示操作手册视频演示/源码获取系统实现截图开发核心技术介绍springboot+Element-UI+vue本系统采用MVVM模式,开发框架使用SpringBoot框架,开发工具使用IDEA,VisualStudioCode,Web服务器使用Tomcat,数据库服务......