在小程序开发的领域中,掌握视图与逻辑相关的技能是打造功能完备、用户体验良好应用的关键。今天,咱们就来深入梳理一下小程序视图与逻辑的学习要点,并结合代码示例,让大家有更直观的理解。

一、页面之间的导航跳转

在小程序里实现页面跳转主要有声明式导航和编程式导航这两种方式。

  1. 声明式导航:借助 navigator 组件就能轻松实现。假设现在有两个页面,分别是 index 页面和 detail 页面,想要从 index 页面跳转到 detail 页面,代码可以这样写:
<navigator url="/pages/detail/detail" open-type="navigate">跳转到详情页</navigator>

在这段代码里,url 属性指定了要跳转的目标页面路径,open-type 属性设置为 navigate 表示以普通跳转的方式打开新页面。
2. 编程式导航:需要用到微信提供的 API,比如 wx.navigateTo。还是以上面的两个页面为例,在 index 页面的 js 文件里,可以这样编写代码实现跳转:

Page({goToDetail: function() {wx.navigateTo({url: '/pages/detail/detail'});}
});

然后在 index 页面的 wxml 文件里添加一个按钮来触发这个跳转函数:

<button bindtap="goToDetail">编程式跳转到详情页</button>

二、实现下拉刷新效果

实现下拉刷新分两步走,先开启下拉刷新功能,再监听下拉刷新事件。

  1. 开启下拉刷新:在页面的 json 配置文件里,添加 enablePullDownRefresh 属性并将其值设为 true 即可。例如:
{"enablePullDownRefresh": true
}
  1. 监听下拉刷新事件:在页面的 js 文件里,通过 onPullDownRefresh 函数来监听并处理下拉刷新事件。比如,当用户下拉刷新时,我们从服务器获取最新数据并更新页面:
Page({data: {list: []},onPullDownRefresh: function() {wx.showLoading({title: '加载中...'});// 模拟从服务器获取数据setTimeout(() => {const newData = [1, 2, 3];this.setData({list: newData});wx.hideLoading();wx.stopPullDownRefresh();}, 2000);}
});

在这段代码里,wx.showLoading 用于显示加载提示,setTimeout 模拟了从服务器获取数据的过程,获取到数据后通过 setData 更新页面数据,最后用 wx.hideLoading 隐藏加载提示,wx.stopPullDownRefresh 停止下拉刷新的动画效果。

三、实现上拉加载更多效果

实现上拉加载更多需要设置一个属性和监听一个事件。

设置上拉处理距离:在页面的 json 配置文件里,添加 onReachBottomDistance 属性来设置上拉触底的距离,单位是 px。例如

{"onReachBottomDistance": 50
}
  1. 监听上拉触底事件:在页面的 js 文件里,通过 onReachBottom 函数来监听上拉触底事件。当用户上拉页面到底部时,加载更多数据并追加到页面现有数据中:
Page({data: {list: [1, 2, 3],page: 1},onReachBottom: function() {const page = this.data.page + 1;wx.showLoading({title: '加载中...'});// 模拟从服务器获取更多数据setTimeout(() => {const newData = [4, 5, 6];const newList = this.data.list.concat(newData);this.setData({list: newList,page: page});wx.hideLoading();}, 2000);}
});

在这段代码里,每次上拉触底时,page 变量加 1,然后模拟从服务器获取新数据,通过 concat 方法将新数据追加到现有数据列表中,最后更新页面数据并隐藏加载提示。

四、小程序中常用的生命周期函数

小程序的生命周期函数分为应用的生命周期函数和页面的生命周期函数。

  1. 应用的生命周期函数:总共只有三个,分别是 onLaunchonShow 和 onHide。在 app.js 文件里可以定义这些函数。
    • onLaunch:小程序初始化完成时触发,在这里可以做一些全局的初始化操作,比如获取用户登录态、初始化全局数据等。
App({onLaunch: function() {wx.getStorage({key: 'userInfo',success(res) {this.globalData.userInfo = res.data;}});},globalData: {userInfo: null}
});
  • onShow:小程序启动,或从后台进入前台显示时触发,可以用来更新页面显示状态。
  • onHide:小程序从前台进入后台时触发,比如可以在这里暂停一些正在进行的任务。
  1. 页面的生命周期函数:一个页面有五个生命周期函数,分别是 onLoadonShowonReadyonHide 和 onUnload
    • onLoad:页面加载时触发,常用来获取页面的初始数据、接收页面传递的参数等。
Page({data: {id: ''},onLoad: function(options) {this.setData({id: options.id});}
});
  • onShow:页面显示 / 切入前台时触发,用于更新页面显示内容。
  • onReady:页面初次渲染完成时触发,此时可以操作页面节点,比如设置导航条标题。
Page({onReady: function() {wx.setNavigationBarTitle({title: '当前页面'});}
});
  • onHide:页面隐藏 / 切入后台时触发,可用于暂停页面相关任务。
  • onUnload:页面卸载时触发,比如在页面关闭时清理一些定时器、解绑事件等。

通过对上述小程序视图与逻辑学习目标的详细讲解和代码示例,希望大家能对这部分知识有更深入的理解和掌握,在小程序开发的道路上迈出更坚实的步伐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/89075.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/89075.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/89075.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生成树基础实验

以太网交换网络中为了进行链路备份&#xff0c;提高网络可靠性&#xff0c;通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路&#xff0c;引发广播风暴以及 MAC地址表不稳定等故障现象&#xff0c;从而导致用户通信质量较差&#xff0c;甚至通信中断。 为解决交换…

flex布局实例:把色子放进盒子里

目录 一、flex布局实例&#xff1a;把色子放进盒子里 1、基础样式 二、justify-content 属性 三、flex-direction 属性 四、align-items 属性 五、flex-wrap 属性 二、flex布局应用到常见场景 非常详细的讲解flex布局&#xff0c;看一看&#xff0c;练一练&#xff01; …

Netty编解码器

目录 1、概念 2、Netty提供的编解码器类型 2.1 解码器 2.1.1 ByteToMessageDecoder 2.1.2 ReplayingDecoder 2.1.3 MessageToMessageDecoder 2.2 编码器 2.2.1 MessageToByteEncoder 2.2.2 MessageToMessageEncoder 2.3 编解码器 2.3.1 ByteToMessageCodec 2.3.2 M…

企业内部安全组网技术解析:安全通道选型、零信任架构与数据合规加密防护

一、引言&#xff1a;企业内部安全组网的重要性 随着企业数字化转型的深入以及远程办公需求的增加&#xff0c;企业内部异地组网逐渐成为企业信息技术部门关注的重要话题。如何在合规合法的前提下&#xff0c;保障企业内部网络连接的安全性、稳定性&#xff0c;并有效保护企业…

Windows 4625日志类别解析:未成功的账户登录事件

Windows 4625日志类别解析&#xff1a;未成功的账户登录事件 什么是Windows 4625日志&#xff1f; Windows 4625日志属于安全日志&#xff08;Security Log&#xff09; 的一部分&#xff0c;记录系统中未成功的账户登录尝试&#xff08;Failed Logon&#xff09;。它是追踪非…

3D看房实现房屋的切换

作为3D看房的补充&#xff0c;在这里&#xff0c;我们讲一下如何实现房屋的切换&#xff0c;我这里提供两种思路&#xff0c; 切换贴图&#xff0c;切换场景&#xff0c; 接下我们按照较复杂的场景切换来讲&#xff0c;切换贴图也就水到渠成&#xff1a; 初始化场景&#xf…

[Android]ANR的线程

ANR的原理是进行了超时告警&#xff0c;在执行一个需要被监控的任务时&#xff0c;注册一个超时提醒&#xff0c;如果很快执行好了&#xff0c;删除这个提醒&#xff0c;如果超时&#xff0c;这个提醒就被触发&#xff0c;这个超时处理是通过handler方式来调用的&#xff0c;这…

RLVR来做Agent任务能力增强训练

和上一篇其实有点承接 上一篇的争论其实是因为要优化agent的任务规划和实现能力的 所以有了self-learning之争 当我们说Self-learning&#xff0c;其实是在说什么&#xff1f; 其实上一篇最后时候提了一点拿RLVR来做agent的任务提升 正好今天看到了一篇应景的论文&#xf…

如何运营一个开源项目并取得较大影响力?

开源不仅是主要的软件开发方法论&#xff0c;还是助力快速创新、分散协作、 生态系统建设和职业发展的卓越战略。如今&#xff0c;无论在哪里&#xff0c;都离不开与 开源的互动。开源存在于你的手机、汽车和冰箱中&#xff0c;它使你最喜欢的节 目或电影的制作和发行成为可能&…

华为高斯数据库的数据类型

华为高斯数据库的数据类型 国产数据库华为高斯的GaussDB的数据类型 华为高斯数据库的数据类型✅ 一、数值类型&#xff08;Numeric Types&#xff09;✅ 二、字符类型&#xff08;Character Types&#xff09;✅ 三、布尔类型&#xff08;Boolean Type&#xff09;✅ 四、日期和…

生物实验室安全、化学品安全

zhihu.com/column/c_1922752541369800632 Docs 目录 第七章 7.1 实验室生物安全等级 7.1.1 生物安全基本概念 7.1.2 生物的危害等级 7.1.2.1 国内生物危害等级 7.1.3 实验室生物安全防护水平分级 7.2 实验室生物安全控制 7.2.1 实验室生物仪器设备安全控制 7.2.1.1 生…

【QT】第一个QT程序 || 对象树 || 编码时的注意事项

一、编写第一个 Qt 程序 1. 开发环境搭建 安装 Qt Creator&#xff08;推荐使用官方在线安装器&#xff09;安装 Qt 库&#xff08;如 Qt 5.15.2 或 Qt 6.x&#xff09;配置编译器&#xff08;MinGW / MSVC / GCC&#xff09; 2. 创建一个简单的 Qt GUI 应用程序 打开 Qt C…

多服务器IP白名单配置(使用redis stream实现)

应用背景 现在我有一个管理平台,可以通过代理连接到内网网站,但是这个代理服务器没有设置密码,所以需要IP白名单让指定用户才可以使用代理。 添加白名单流程图 流程描述: 登录管理平台成功后,管理平台的后台将这个登录的IP地址添加到redis,并设置过期时间为24小时redis…

Vue 3 Teleport 特性

目录 基本用法​ 搭配组件使用​ 禁用 Teleport​ 多个 Teleport 共享目标​ 延迟解析的 Teleport ​ 总结 <Teleport> 是一个内置组件&#xff0c;它可以将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去。 基本用法​ 有时我们可能会遇到这…

常用指令合集(DOS/Linux/git/Maven等)

文章目录 常用指令收集vmware 虚拟机联网设置ubuntu 常见问题设置apt 相关指令&#xff1a;gcc 编译相关指令 sqlite3VSCode 快捷键&#xff1a;收索引擎技巧&#xff08;google&#xff09;Intelideashell--LinxvimgitDOS:mavendockerkubectl 指令nginx配置redis-clientMySQLl…

ABP VNext + MassTransit:构建分布式事务与异步消息协作

ABP VNext MassTransit&#xff1a;构建分布式事务与异步消息协作 &#x1f680; &#x1f4da; 目录 ABP VNext MassTransit&#xff1a;构建分布式事务与异步消息协作 &#x1f680;&#x1f4da; 1. 背景与动机&#x1f6e0;️ 2. 环境与依赖&#x1f527; 3. 在 ABP 模块…

语义网技术

用通俗语言说语义网技术&#xff0c;以及它和现在互联网的关系 一、语义网技术&#xff1a;让网络“听懂人话”的智能升级 现有互联网就像一本巨大的“图文报纸”&#xff1a;我们人类看文章、图片能轻松理解意思&#xff0c;但计算机只能识别文字符号&#xff0c;不知道“苹…

pytorch学习—4.反向传播(用pytorch算梯度)

2. 线性模型 3.梯度下降算法 4.反向传播_哔哩哔哩_bilibili 4.1 代码复现 import torch import matplotlib.pyplot as pltx_data=[1.0,2.0,3.0] y_data=[2.0,4.0,6.0]#这里创建了一个PyTorch张量w,初始值为1.0,并且设置requires_grad=True, #这意味着在计算过程中,PyTo…

7类茶叶嫩芽图像分类数据集

在茶叶育种、溯源管理与自动采摘等智能农业场景中&#xff0c;茶树品种的识别与分类是一项关键任务。不同茶叶品种在嫩芽期表现出显著的形态差异&#xff0c;例如颜色、叶缘结构、芽头密度等。因此&#xff0c;基于图像的茶叶品种分类不仅具备实际应用价值&#xff0c;也为农业…

【Elasticsearch】Linux环境下安装Elasticsearch

一&#xff0c;前言 Elasticsearch&#xff08;简称 ES&#xff09;是一个基于 ​​Apache Lucene​​ 构建的开源分布式搜索与分析引擎。它支持​​实时数据处理​​&#xff0c;提供近实时的全文搜索能力&#xff0c;并通过 ​​JSON 格式的 RESTful API​​ 实现数据索引与检…