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 页面吗?直接复制到项目就能跑。

相关推荐
kyriewen7 小时前
产品经理把PRD写成“天书”,我用AI半小时重写了一遍,他当场愣住
前端·ai编程·cursor
humcomm7 小时前
元框架的工作原理详解
前端·前端框架
canonical_entropy7 小时前
Attractor Before Harness: AI 大规模开发的方法论
前端·aigc·ai编程
zhangxingchao8 小时前
多 Agent 架构到底怎么选?从 Claude Agent Teams、Cognition/Devin 到工程落地原则
前端·人工智能·后端
IT_陈寒8 小时前
SpringBoot那个自动配置的坑,害我排查到凌晨三点
前端·人工智能·后端
Honor丶Onlyou8 小时前
VS Code 右键菜单修复记录
前端
PILIPALAPENG8 小时前
Python 语法速成指南:前端开发者视角(JS 类比版)
前端·人工智能·python
JYeontu8 小时前
轮播图不够惊艳?试下这个立体卡片轮播图
前端·javascript·css
张就是我1065928 小时前
从前端角度理解 CVE-2026-31431
前端
AGoodrMe8 小时前
swift基础之async/await
前端·ios