You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular如何通过路由将对象数组从一个页面传递到另一个页面

路由传递对象数组的实现方案

核心注意点:不要直接将未序列化的对象数组作为URL查询参数传递,会出现参数丢失、格式异常问题。

以下是两种适配不同场景的实现方案,适配你给出的数组结构:

const targetArr = [
  { attributeName: "name0", attributeValue: "val0" },
  { attributeName: "name1", attributeValue: "val1" },
  { attributeName: "name2", attributeValue: "val2" }
]

方案1:参数序列化传递(适合短数组、无敏感数据场景)

跳转时先序列化数组为字符串传递,第二页接收后反序列化即可:

  • 序列化时增加编码处理,避免JSON特殊字符被URL自动转义导致解析失败
  • 数组长度过长时不推荐使用,URL存在长度上限

Vue Router 实现示例

第一页按钮跳转逻辑:

goToSecondPage() {
  const arrStr = encodeURIComponent(JSON.stringify(targetArr))
  this.$router.push({
    path: '/second-page',
    query: { passData: arrStr }
  })
}

第二页接收逻辑:

created() {
  const arrStr = this.$route.query.passData
  this.receiveArr = arrStr ? JSON.parse(decodeURIComponent(arrStr)) : []
}

React Router 实现示例

第一页按钮跳转逻辑:

import { useNavigate } from 'react-router-dom'

function FirstPage() {
  const navigate = useNavigate()
  const goToSecondPage = () => {
    const arrStr = encodeURIComponent(JSON.stringify(targetArr))
    navigate(`/second-page?passData=${arrStr}`)
  }
}

第二页接收逻辑:

import { useSearchParams } from 'react-router-dom'

function SecondPage() {
  const [searchParams] = useSearchParams()
  const arrStr = searchParams.get('passData')
  const receiveArr = arrStr ? JSON.parse(decodeURIComponent(arrStr)) : []
}

方案2:临时存储/全局状态传递(适合长数组、含敏感数据场景)

数组长度大或包含敏感数据时,不需要拼接URL参数,用临时存储传递即可:

  • 可选用localStorage/sessionStorage做临时存储,也可以用Pinia/Vuex/Redux等全局状态库存储
  • 读取完成后可清除临时存储,避免数据残留

通用localStorage实现示例:
第一页按钮跳转逻辑:

goToSecondPage() {
  localStorage.setItem('routePassArr', JSON.stringify(targetArr))
  // 直接执行路由跳转即可,不需要携带参数
  this.$router.push('/second-page')
}

第二页接收逻辑:

created() {
  const arrStr = localStorage.getItem('routePassArr')
  this.receiveArr = arrStr ? JSON.parse(arrStr) : []
  // 读取完成后清除临时数据
  localStorage.removeItem('routePassArr')
}

内容的提问来源于stack exchange,提问作者Rinki Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:15:02