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

〔开发系列〕一次关于小程序开发的深度总结

一 路由跳转

需求:如何获取当前页面的上一个页面
场景:用于判断返回哪一个页面的时候使用

const pages = getCurrentPages();
const Page = pages[pages.length - 1];//当前页
const prevPage = pages[pages.length - 2];  //上一个页面

1. 封装返回上一个页面的方法

// 封装返回上一个页面的方法:
export function navigateBackByPage() {
    // 判断上一个页面 然后返回上一个页面: 发布页或者订单页
    const pages = getCurrentPages();
    const prevPage = pages[pages.length - 2];  //上一个页面
    if (prevPage) {
        wx.navigateBack();
    }
}
// 调用方法
navigateBackByPage();

2. 如何返回上上个页面

wx.navigateBack({
 delta: 2
})

3. 返回上一页的时候把当前页的数据传递会上一个页面

const pages = getCurrentPages();
const prevPage = pages[pages.length - 2]; //上一个页面
// 直接调用上一个页面的setData()方法,把数据存到上一个页面中去
prevPage.setData({
   orderId: orderId
});
wx.navigateBack();

二 列表页传递id获取详情页数据

// 01 遍历列表页 获取每一项item的id 绑定到data属性中
<block wx:for={{list}}>
     <view class="scroll-view-item" catchtap="toOrderDetail"
     data-id="{{item.id}}">{{item.title}}</view>
 </block >
// 02 列表页 通过事件和参数传递id
toOrderDetail(e) {
   const id = e.currentTarget.dataset.id;
   wx.navigateTo({
      url:'order-detail/order-detail?id=' + id
   })
}

// 03 详情页 在onload中间中拿到URL传递过来的参数id 请求详情页接口 拼接id参数
onLoad(option) {
    const id = option.id;
    const detailApi = 'http://192.168.1.142:8096/app/FindOrder/findOrderById?orderId=' + id
      发起请求···
}

三 动态设置页面顶部导航栏标题

说明

01 onload中不能设置,因为onload过程中页面并没有生成,所以不能操作UI,onShow渲染页面只是一瞬间,也不能展示UI,js中操作UI和设置展示UI,只能用onReady,onLoad和onShow用来处理数据请求,处理业务逻辑
02 (重点思路)在onLoad获取数据,传递到data;onReady使用data中的数据渲染导航
// 01 数据初始化
data:{
  navigationTitle:''
}
// 02 在onLoad中获取列表页js传递过来的参数:
// 场景一:列表页传递数据给详情页
// 场景一:直接请求接口获取数据,如果情面有多种状态,通过不同状态动态设置导航
onLoad(option) {
   const title = option.title;
   this.setData({
     navigationTitle:title
   })
}
// 03 需要在onReady生命周期中设置导航条:
onReady() {
   wx.setNavigationBarTitle({
      title:this.data.navigetionTitle
   })
}

四 跨页全局传递数据的两种方法

场景:实时数据传递

  1. 通过app.js中的全局变量globalData:{ },当前页的数据赋值给全局变量,另一个页面实时获取全局变量的值
// 页面a 
app.globalData.workTypeId= workTypeId;
// 页面b
const workTypeId= app.globalData.workTypeId

场景:从持久化数据中获取数据

  1. 通过缓存来缓存数据 在任意页面获取
wx.setStorageSync('userInfoLogin', userInfoLogin); // 登陆后缓存用户userId
// 封装获取id的方法
export function getStorageUserId() {
    const userInfoLogin = wx.getStorageSync('userInfoLogin');
    return userInfoLogin.id;
}
// 调用
const userId getStorageUserId()

持续更新中···

相关文章:

  • [译]2.1-Key-Value Coding Programming Guide 官方文档第二部分
  • Oracle 11g win32位 window7下安装教程
  • C++容器
  • 区块链软件:谈溯源问题
  • nginx动静分离之后,设置默认主页
  • 深度优先遍历和广度优先遍历
  • React系列--三大属性 props refs state
  • LocationCoder 地图经纬度解析
  • 数据库隔离级别
  • 1.3创建项目「深入浅出ASP.NET Core系列」
  • 使用API自动生成工具优化前端工作流
  • dos基本命令
  • vue双向绑定原理及实现
  • Ubuntu
  • 阿里五年Java程序员的总结,献给还在迷茫中的你!
  • ComponentOne 2017 V2版本正式发布
  • es6
  • FastReport在线报表设计器工作原理
  • Fundebug计费标准解释:事件数是如何定义的?
  • java 多线程基础, 我觉得还是有必要看看的
  • Java面向对象及其三大特征
  • Java小白进阶笔记(3)-初级面向对象
  • java中的hashCode
  • leetcode98. Validate Binary Search Tree
  • magento2项目上线注意事项
  • Nodejs和JavaWeb协助开发
  • React Native移动开发实战-3-实现页面间的数据传递
  • react-native 安卓真机环境搭建
  • 半理解系列--Promise的进化史
  • 分布式事物理论与实践
  • 基于组件的设计工作流与界面抽象
  • 前端存储 - localStorage
  • 前端知识点整理(待续)
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 微服务入门【系列视频课程】
  • 自动记录MySQL慢查询快照脚本
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 数据库巡检项
  • ​你们这样子,耽误我的工作进度怎么办?
  • !!Dom4j 学习笔记
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #AngularJS#$sce.trustAsResourceUrl
  • ${factoryList }后面有空格不影响
  • (1)(1.13) SiK无线电高级配置(六)
  • (1)(1.13) SiK无线电高级配置(五)
  • (ZT)一个美国文科博士的YardLife
  • (二开)Flink 修改源码拓展 SQL 语法
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (一)80c52学习之旅-起始篇
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .NET设计模式(8):适配器模式(Adapter Pattern)