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

相关推荐
ZC跨境爬虫32 分钟前
Playwright进阶操作:鼠标拖拽与各类点击实战(含自定义拖拽实例)
前端·爬虫·python·ui
小江的记录本35 分钟前
【RabbitMQ】RabbitMQ核心知识体系全解(5大核心模块:Exchange类型、消息确认机制、死信队列、延迟队列、镜像队列)
java·前端·分布式·后端·spring·rabbitmq·mvc
心静财富之门36 分钟前
《前端零基础入门:HTML + CSS + JavaScript 全套速查表(详细版 + 实例)》
前端·javascript·python
星空37 分钟前
前端--A_4--HTML表单
前端
We་ct1 小时前
JS手撕:DOM操作 & 浏览器API高频场景详解
开发语言·前端·javascript·面试·状态模式·操作·考点
小江的记录本1 小时前
【RocketMQ】RocketMQ核心知识体系全解(5大核心模块:架构模型、事务消息两阶段提交、回查机制、延迟消息、顺序消息)
linux·运维·服务器·前端·后端·架构·rocketmq
三万棵雪松1 小时前
【Linux 物联网网关主控系统-Web部分(二)】
linux·前端·物联网
We་ct1 小时前
LeetCode 137. 只出现一次的数字 II:从基础到最优的两种解法详解
前端·数据结构·算法·leetcode·typescript·位运算
源码站~1 小时前
基于Spring Boot+Vue3的烹饪交流学习系统 设计与实现
java·vue.js·spring boot·后端·mysql·毕业设计·毕设
星空1 小时前
前端--A_3--HTML区块_块元素与行内元素
前端·html