Vue2 微信小程序:页面间传递数组

Vue2 微信小程序:页面间传递数组

你想在Vue2 语法开发的微信小程序 中,把当前页面的数组数据,通过页面跳转传递到下一个页面并使用,我给你整理了最常用、最稳定的3种方案,直接复制就能用。


核心前提

微信小程序原生路由不支持直接传递复杂类型(数组/对象),必须先转成 JSON 字符串。


方案1:路由传参(最常用、推荐)

第一步:上一个页面(传递数据)

vue 复制代码
<template>
  <button @click="goNextPage">跳转到下一页</button>
</template>

<script>
export default {
  data() {
    return {
      // 要传递的数组
      list: [1, 2, 3, { name: "测试" }]
    };
  },
  methods: {
    goNextPage() {
      // 数组转 JSON 字符串
      const data = JSON.stringify(this.list);
      
      // 路由跳转(navigateTo/redirectTo 都可以)
      uni.navigateTo({
        url: `/pages/next/next?list=${data}`
      });
    }
  }
};
</script>

第二步:下一个页面(接收数据)

vue 复制代码
<script>
export default {
  onLoad(options) {
    // 1. 获取路由字符串
    const str = options.list;
    // 2. 转回数组
    const newList = JSON.parse(str);
    
    console.log("接收的数组:", newList);
    this.list = newList;
  },
  data() {
    return {
      list: []
    };
  }
};
</script>

方案2:全局变量(适合跨多页面共享)

1. 在 main.js 或 App.vue 定义全局数据

js 复制代码
Vue.prototype.$globalData = {
  list: []
};

2. 上一页存入数据

js 复制代码
goNextPage() {
  // 存入全局
  this.$globalData.list = this.list;
  uni.navigateTo({
    url: "/pages/next/next"
  });
}

3. 下一页直接取用

js 复制代码
onLoad() {
  this.list = this.$globalData.list;
}

方案3:事件总线 EventBus(适合灵活通信)

1. 定义 eventBus.js

js 复制代码
import Vue from 'vue'
export default new Vue()

2. 上一页发送

js 复制代码
import bus from '@/utils/eventBus'

goNextPage() {
  bus.$emit('sendList', this.list);
  uni.navigateTo({ url: '/pages/next/next' });
}

3. 下一页接收

js 复制代码
import bus from '@/utils/eventBus'

onLoad() {
  bus.$once('sendList', (res) => {
    this.list = res;
  });
}

推荐选择

✅ 小数组、简单传递 → 用 方案1 路由传参

✅ 多页面共享、大数据 → 用 方案2 全局变量

✅ 需要灵活通信 → 用 方案3 事件总线


总结

  1. 路由传数组必须 JSON.stringify + JSON.parse
  2. 最推荐:路由直接传参,简单无依赖
  3. 大数据/多页面用 全局变量 更稳定

需要我给你写一个完整可运行的 demo 页面吗?直接复制到项目就能跑。

相关推荐
林恒smileZAZ18 分钟前
浏览器为什么加载不了超大图片
前端·vue.js·html5
hhwyqwqhhwy1 小时前
设备树之 provider 和 consumer
java·linux·前端
垆边人似月.2 小时前
Python中如何使用get函数实现频次查询
服务器·前端·python
moshuying2 小时前
DeepSeek开源生产级推理框架DeepInfer:单集群一天处理155万亿token,这意味着什么?
前端
子兮曰3 小时前
PHP漏洞危机,你的网站升级了吗?
前端·后端·php
jerrywus3 小时前
给 Pi 装上生图插件:从登录报错到画出一只 200×200 的猫
前端·agent·claude
陈随易3 小时前
搞钱点子之生态鱼缸
前端·后端·程序员
PBitW4 小时前
从空目录到上线:我全程用 TRAE 做了一款微信小游戏合集(含一次完整架构重构)
前端·trae
不爱学英文的码字机器4 小时前
从Q1迁到T1,同一个编号已经换了含义
前端·数据库·microsoft
云和数据.ChenGuang4 小时前
光哥说Python 循环导入(Circular Import)深度解析:成因、排查与解决方案
开发语言·前端·人工智能·python·langchain