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

相关推荐
萧鼎1 小时前
Python 高性能Web框架神器 FastAPI:自动生成API文、基于Pydant、异步请求处理全搞定
前端·python·fastapi
IT_陈寒2 小时前
Redis误用keys命令把生产环境搞崩了,血的教训
前端·人工智能·后端
计算机魔术师2 小时前
5000亿估值冲刺科创板,DeepSeek 为何急着上市?
前端
我血条子呢2 小时前
前端解析word方案
前端·word
kyriewen3 小时前
我用 AI 写完一个需求后才发现,最难的不是 prompt,而是验收
前端·程序员·ai编程
申行3 小时前
Vue 3 + DYMO Connect Framework 实战:从标签模板到打印服务的完整实现
前端
两只羊ovo3 小时前
Vue 3 + DeepSeek 流式输出实战:从“干等”到“打字机”体验
前端·vue.js
Yeyu3 小时前
车载多 App 同屏渲染(二):SurfaceControlViewHost 跨进程
前端
樊小肆3 小时前
离谱,每轮请求 25% 的 token,竟在重发模型想完就扔的内心独白
前端·人工智能·agent
小妖现世3 小时前
前端面试复习笔记:React 高频题 + JS 手写题
前端