当前位置: 首页 > article >正文

【微信小程序】页面跳转基础 | 我的咖啡店-综合实训

页面跳转基础

引言

        在微信小程序开发中,页面跳转和参数传递是常见的需求。本文将通过一个实际案例——“我的咖啡店”小程序,详细介绍如何在微信小程序中实现页面跳转和参数传递。

页面跳转基础

        在微信小程序中,页面跳转主要通过wx.navigateTowx.redirectTo两个API实现。wx.navigateTo用于跳转到新页面,并且可以返回;而wx.redirectTo则是关闭当前页面,跳转到应用内的某个页面。

1. 跳转到普通页面

mine.js中,我们定义了goIndex函数,用于跳转到index页面:

// pages/mine/mine.js
Page({
  goIndex() {
    wx.navigateTo({
      url: '../index/index',
    });
  },
  // 其他函数...
});

2. 跳转到tabBar页面

对于tabBar页面的跳转,我们使用wx.switchTab

// pages/mine/mine.js
Page({
  goHome() {
    wx.switchTab({
      url: '../home/home',
    });
  },
  // 其他函数...
});

带参数跳转

在某些情况下,我们需要在跳转页面时传递参数。这可以通过在URL后面添加查询字符串来实现。

3. 跳转页面并带参数

mine.js中,我们定义了goAA函数,用于跳转到AA页面并传递参数:

// pages/mine/mine.js
Page({
  goAA(event) {
    let a = event.currentTarget.dataset.a;
    console.log("event", a);
    wx.navigateTo({
      url: '../AA/AA?aa=' + a,
    });
  },
  // 其他函数...
});

获取传递的参数

在目标页面,我们可以通过onLoad函数的options参数来获取传递的参数。

4. 在跳转的页面中获取参数

AA.js中,我们定义了onLoad函数,用于获取传递的参数:

// pages/AA/AA.js
Page({
  onLoad(options) {
    console.log("options", options.aa);
    this.getxxx(options.aa);
  },
  getxxx(aa) {
    console.log("aa===", aa);
  }
});

结语

        通过上述步骤,我们成功在“我的咖啡店”小程序中实现了页面跳转和参数传递功能。用户可以在不同页面间跳转,并且可以传递必要的参数。如果你在实现过程中遇到问题,可能是由于路径错误或者参数传递不正确。请检查路径的合法性,并确保参数正确传递。希望这篇文章能帮助你在开发自己的微信小程序时,更好地实现页面跳转和参数传递功能。

完整代码

app.json

{
  "pages": [
    "pages/home/home",
    "pages/index/index",
    "pages/logs/logs",
    "pages/order/order",
    "pages/ordering/ordering",
    "pages/mine/mine",
    "pages/search/search",
    "pages/AA/AA"
  ],
  "window": {
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "我的咖啡店",
    "navigationBarBackgroundColor": "#ffffff"
  },
  "style": "v2",
  "componentFramework": "glass-easel",
  "sitemapLocation": "sitemap.json",
  "lazyCodeLoading": "requiredComponents",
  "tabBar": {
    "color": "#bfbfbf",
    "selectedColor": "#8B7355",
    "backgroundColor": "#ffffff",
    "list": [
      {
        "pagePath": "pages/home/home",
        "text": "首页",
        "iconPath": "./image/home.png",
        "selectedIconPath": "./image/home-active.png"
      },
      {
        "pagePath": "pages/order/order",
        "text": "点餐",
        "iconPath": "./image/order.png",
        "selectedIconPath": "./image/order-active.png"
      },
      {
        "pagePath": "pages/ordering/ordering",
        "text": "订单",
        "iconPath": "./image/ordering.png",
        "selectedIconPath": "./image/ordering-active.png"
      },
      {
        "pagePath": "pages/mine/mine",
        "text": "我的",
        "iconPath": "./image/mine.png",
        "selectedIconPath": "./image/mine-active.png"
      }
    ]
  },
  "usingComponents": {
    "van-search": "@vant/weapp/search/index",
    "van-cell": "@vant/weapp/cell/index",
    "van-cell-group": "@vant/weapp/cell-group/index"
  }
}

mine.wxml

<!-- pages/mine/mine.wxml -->
<view class="mine">
  <van-cell title="去Index" bind:click="goIndex" is-link />
  <van-cell title="去Home" bind:click="goHome" is-link />
  <van-cell title="去AA" bind:click="goAA" is-link />
</view>

mine.js

// pages/mine/mine.js
Page({
  // 1. 跳转到普通页面
  goIndex() {
    wx.navigateTo({
      url: '../index/index',
    });
  },
  // 2. 跳转到tabBar页面
  goHome() {
    wx.switchTab({
      url: '../home/home',
    });
  },
  // 3. 跳转页面 带参数
  goAA(event) {
    // 获取自定义属性a的值
    let a = event.currentTarget.dataset.a;
    console.log("event", a);
    wx.navigateTo({
      // 带参数的url怎么写?
      // 路径?参数名=值
      url: '../AA/AA?aa=' + a,
    });
  }
});

AA.js

// pages/AA/AA.js
Page({
  // 生命周期函数--监听页面加载
  onLoad(options) {
    console.log("options", options.aa);
    // 调用
    this.getxxx(options.aa);
  },
  // 获取参数
  getxxx(aa) {
    console.log("aa==>", aa);
  }
});

展示

我的页面

 去Index页面-普通页面

去Home页面-tabBar页面

 去AA页面-在跳转的页面中获取参数


http://www.kler.cn/a/455107.html

相关文章:

  • Go入门篇:(一)golang的安装和编辑工具安装
  • blender中合并的模型,在threejs中显示多个mesh;blender多材质烘培成一个材质
  • 字节跳动Java开发面试题及参考答案(数据结构算法-手撕面试题)
  • 论文阅读 - 《Large Language Models Are Zero-Shot Time Series Forecasters》
  • upload-labs关卡记录12
  • 【java面向对象编程】第九弹----抽象类、接口、内部类
  • 猛将:无我
  • 2025:OpenAI的“七十二变”?
  • 【测试】接口测试
  • 数据可视化软件配置
  • Unity 踩坑记录 将Image 的 Image Type 设置成 sliced 不显示图片
  • 【超详细】Windows安装Npcap
  • Framework开发入门(一)之源码下载
  • 音视频入门知识(七):时间戳及其音视频播放原理
  • Redis String 字符串详细讲解
  • 极狐GitLab 17.7正式发布,可从 GitLab 丝滑迁移至极狐GitLab【一】
  • OCR实践-问卷表格统计
  • Xilinx FPGA的Bitstream比特流加密设置方法
  • 浅谈Python库之asyncio
  • springboot499基于javaweb的城乡居民基本医疗信息管理系统(论文+源码)_kaic
  • layui多图上传,tp8后端接收处理
  • 【蓝桥杯】奇怪的捐赠
  • 【Artificial Intelligence篇】AI 携手人类:共铸未来创作新纪元
  • 去除 el-input 输入框的边框(element-ui@2.15.13)
  • 【模块系列】STM321.69TFT屏幕
  • windows C#-在查询中返回元素属性的子集