微信小程序页面导航、编程式导航、页面事件、生命周期和WXS脚本

news2025/1/14 0:49:47

文章目录

    • 页面导航
        • 1.导航到tarBar页面
        • 2.导航到非 tabBar 页面
        • 3.后退导航
    • 编程式导航
        • 1.导航到tabBar页面
        • 2.导航到非 tabBar 页面
        • 3.后退导航
    • 导航传参
        • 1. 声明式导航传参
        • 2. 编程式导航传参
        • 3. 在 onLoad 中接收导航参数
    • 页面事件
        • 下拉刷新
        • 上拉触底
        • 数据请求获取中添加loading效果,请求完毕关闭loading效果
    • 自定义编译模式

页面导航

页面导航指的是页面之间的相互跳转。例如,浏览器中实现页面导航的方式有如下两种:

  • < a> 链接
  • location.href

小程序中实现页面导航的两种方式

  1. 声明式导航
    • 在页面上声明一个 < navigator> 导航组件
    • 通过点击 < navigator> 组件实现页面跳转
  2. 编程式导航
    • 调用小程序的导航 API,实现页面的跳转

1.导航到tarBar页面

tabBar页面指的是被配置为tabBar的页面。
在使用< navigator>组件跳转到指定的 tabBar页面时,需要指定url属性和open-type属性,其中:

  • url表示要跳转的页面的地址,必须以/开头
  • open-type表示跳转的方式,必须为switchTab
    在这里插入图片描述

2.导航到非 tabBar 页面

非 tabBar 页面指的是没有被配置为 tabBar 的页面。
在使用 < navigator> 组件跳转到普通的非 tabBar 页面时,则需要指定 url 属性和 open-type 属性,其中:

  • url 表示要跳转的页面的地址,必须以 / 开头
  • open-type 表示跳转的方式,必须为 navigate
    在这里插入图片描述注意:为了简便,在导航到非 tabBar 页面时,open-type=“navigate” 属性可以省略。

3.后退导航

如果要后退到上一页面或多级页面,则需要指定 open-type 属性和 delta 属性,其中:

  • open-type 的值必须是 navigateBack,表示要进行后退导航
  • delta 的值必须是数字,表示要后退的层级
    示例代码如下:
    在这里插入图片描述
    注意:为了简便,如果只是后退到上一页面,则可以省略 delta 属性,因为其默认值就是 1。

编程式导航

1.导航到tabBar页面

调用 wx.switchTab(Object object) 方法,可以跳转到 tabBar 页面。其中 Object 参数对象的属性列表如下:

属性类型是否必选说明
urlstring需要跳转的 tabBar 页面的路径,路径后不能带参数
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)

示例代码如下:
在这里插入图片描述

2.导航到非 tabBar 页面

调用 wx.navigateTo(Object object) 方法,可以跳转到非 tabBar 的页面。其中 Object 参数对象的属性列表如下:

属性类型是否必选说明
urlstring需要跳转的 非tabBar 页面的路径,路径后不能带参数
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)

代码如下:
在这里插入图片描述

3.后退导航

调用 wx.navigateBack(Object object) 方法,可以返回上一页面或多级页面。其中 Object 参数对象可选的属性列表如下:

属性类型默认值是否必选说明
deltanumber1返回的页面数,如果 delta 大于现有页面数,则返回到首页
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)

示例代码如下:
在这里插入图片描述

导航传参

1. 声明式导航传参

navigator 组件的 url 属性用来指定将要跳转到的页面的路径。同时,路径的后面还可以携带参数:

  • 参数与路径之间使用 ? 分隔
  • 参数键与参数值用 = 相连
  • 不同参数用 & 分隔

代码示例如下:
在这里插入图片描述

2. 编程式导航传参

调用 wx.navigateTo(Object object) 方法跳转页面时,也可以携带参数,代码示例如下:
在这里插入图片描述

3. 在 onLoad 中接收导航参数

通过声明式导航传参或编程式导航传参所携带的参数,可以直接在 onLoad 事件中直接获取到,示例代码如下:
在这里插入图片描述

页面事件

下拉刷新

1.什么是下拉刷新?
下拉刷新是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据的行为。
2.启用下拉刷新
启用下拉刷新有两种方式:

  1. 全局开启下拉刷新
    • 在 app.json 的 window 节点中,将 enablePullDownRefresh 设置为 true
  2. 局部开启下拉刷新
    • 在页面的 .json 配置文件中,将 enablePullDownRefresh 设置为 true

在实际开发中,推荐使用第 2 种方式,为需要的页面单独开启下拉刷新的效果。

3. 配置下拉刷新窗口的样式
在全局或页面的 .json 配置文件中,通过 backgroundColorbackgroundTextStyle 来配置下拉刷新窗口的样式,其中:

  • backgroundColor 用来配置下拉刷新窗口的背景颜色,仅支持16 进制的颜色值
  • backgroundTextStyle 用来配置下拉刷新 loading 的样式,仅支持 dark 和 light

4. 监听页面的下拉刷新事件
在页面的 .js 文件中,通过 onPullDownRefresh() 函数即可监听当前页面的下拉刷新事件。
例如,在页面的 wxml 中有如下的 UI 结构,点击按钮可以让 count 值自增 +1:
在这里插入图片描述

在触发页面的下拉刷新事件的时候,如果要把 count 的值重置为 0,示例代码如下:

在这里插入图片描述

5. 停止下拉刷新的效果
当处理完下拉刷新后,下拉刷新的 loading 效果会一直显示,不会主动消失,所以需要手动隐藏下拉刷新的 loading 效果。此时,调用 wx.stopPullDownRefresh() 可以停止当前页面的下拉刷新。示例代码如下:

在这里插入图片描述

上拉触底

1.什么是上拉触底
上拉触底是移动端的专有名词,通过手指在屏幕上的上拉滑动操作,从而加载更多数据的行为。

2. 监听页面的上拉触底事件
在页面的 .js 文件中,通过 onReachBottom() 函数即可监听当前页面的上拉触底事件。示例代码如下:
在这里插入图片描述

3. 配置上拉触底距离
上拉触底距离指的是触发上拉触底事件时,滚动条距离页面底部的距离。
可以在全局或页面的 .json 配置文件中,通过 onReachBottomDistance 属性来配置上拉触底的距离。
小程序默认的触底距离是 50px,在实际开发中,可以根据自己的需求修改这个默认值。如下

"onReachBottomDistance ":150  //可以不带单位,小程序默认px单位

数据请求获取中添加loading效果,请求完毕关闭loading效果

可以通过 wx.showloading(Object Object) 添加loading效果

Object Object
相关参数:官方文档地址

属性类型默认值必填说明
titlestring提示的内容
maskbooleanfalse是否显示透明蒙层,防止触摸穿透
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)
getfunction(){
	wx.showLoading({  //1.展示loading效果
	title:"数据加载中"
	})
}

可以通过wx.hideLoading(Object object) 添加关闭loading效果

Object object相关属性:官方文档地址

属性类型默认值必填说明
noConflictbooleanfalse目前 toast 和 loading 相关接口可以相互混用,此参数可用于取消混用特性
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)

以上的综合代码案例

//避免用户多次请求,这里顺便演示一下节流阀使用

//在data定义isloading代表节流阀
data:{
	isloading:false  //节流阀初始值为false
}
getfunction(){
	//发送请求前将节流阀数据改为true
	this.setData({
		isloading:true
	})
	wx.showLoading({  //1.展示loading效果
	title:"数据加载中"
	})

	//发起请求
	wx.request({
		//省略其他代码
		complete:() => {
			wx.hideLoading()  //2.隐藏loading效果
				//发送请求结束将节流阀数据改为false
			this.setData({
				isloading:false
			})
		}
	})
}


//假设页面上拉触底时发送请求,那么需要判断isloading的值为false才能发请求,为true相当于上一次请求未完成,则不能发请求,避免用户同一时间多次发送请求
onReachBottom:function(){
	//当isloading的值为true,则返回,为false则通过可以发送请求
	if(this.data.isloading) return;
	//通过后调用上面函数发送请求
	this.getfunction()
}

效果图:
在这里插入图片描述

自定义编译模式

在这里插入图片描述
在以上的图片案例中,例如我们在app.json定义了首页为最先一级的(最先展示的页面),那么此时如果我们切换到联系我们页面,想要改变此页面的样式,但每次保存后都会重定向到首页,因为每次保存相当于刷新小程序,而首页也是优先展示的,那如果我们想要每次改完样式保存后,都停留在当前页面,那怎么做呢???这就要用到这个自定义编译模式了

步骤:
1.在编辑器点开如下图的列表,选择添加编译模式
在这里插入图片描述
2.会有如下的弹出层
在这里插入图片描述
如果需要传参数的话,也可以自定义在上面传递参数,每次打开次页面都会携带参数
模式名称也可以自定义,如"联系我们页面的开发与调试"
完成后直接保存即可,以后每次开发都会直接定位到我们期望的页面

删除保存的编译模式
1.还是找到那个下拉列表,找到我们保存的编译模式, -----点击右边的小铅笔(编辑模式)
在这里插入图片描述
2.点小铅笔进去后,弹出层左下角有个删除该模式
在这里插入图片描述
点击删除该模式就删除了,非常简单,到此为止,自定义编译模式就全部结束了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一本修炼秘籍,带你打穿文件上传的21层妖塔(1)

目录 前言 引子 第一层&#xff1a;JS限制——你在玩一种很新的防御 第二层&#xff1a;Content-Type限制——我好像在哪见过你 第三层&#xff1a;黑名单绕过——让我康康&#xff01; 前言 &#x1f340;作者简介&#xff1a;被吉师散养、喜欢前端、学过后端、练过CTF、…

Jetpack Compose中的副作用Api

Compose的生命周期 每个Composable函数最终会对应LayoutNode节点树中的一个LayoutNode节点&#xff0c;可简单的为其定义生命周期&#xff1a; onActive: 进入重组作用域&#xff0c; Composable对应的LayoutNode节点被挂接到节点树上onUpdate&#xff1a;触发重组&#xff0c…

Dolphin scheduler在Windows环境下的部署与开发

这里写自定义目录标题环境介绍WSL2工程下载修改POM文件java版本mysql驱动修改mysql密码IDEA配置JDK8模块导出运行配置环境介绍 MySql&#xff1a;8.0.31 JDK&#xff1a;17 需要安装windows的wsl2 WSL2 首先安装好WSL2&#xff0c;并且通过 sudo apt-get install openjdk-17…

类模板与模板类

#include <stdio.h>#include <iostream>using namespace std;//注意必须将类的声明和定义写在同一个.h文件中 未来把它包含进来//写上关键字template 和模板参数列表template<typename T, int KSize, int KVal>class MyArray{public:MyArray();//当在类内定义…

正点原子STM32(基于HAL库)2

目录STM32 基础知识入门寄存器基础知识STM32F103 系统架构Cortex M3 内核& 芯片STM32 系统架构存储器映射寄存器映射新建寄存器版本MDK 工程STM32 基础知识入门 寄存器基础知识 寄存器&#xff08;Register&#xff09;是单片机内部一种特殊的内存&#xff0c;它可以实现…

【自学Docker】Docker HelloWorld

Docker HelloWorld Docker服务 查看Docker服务状态 使用 systemctl status docker 命令查看 Docker 服务的状态。 haicoder(www.haicoder.net)# systemctl status docker我们使用 systemctl status docker 命令查看 Docker 服务的状态&#xff0c;显示结果如下图所示&#…

HotPDF Delphi PDF编译器形成PDF文档

HotPDF Delphi PDF编译器形成PDF文档 HotPDF Delphi PDF编译器支持通过内部和外部链接完全形成PDF文档。计算机还完全支持Unicode。此外&#xff0c;在您的产品和软件中使用此计算机的最新功能&#xff0c;您可以指定加密、打印和编辑PDF文档的能力。当您加密PDF文档时&#xf…

Markdown总结

为什么要使用Markdowm 什么是Markdown?为什么需要使用Markdown&#xff1f; Markdown 是一种轻量级标记语言&#xff0c;它允许人们使用易读易写的纯文本格式编写文档。 Markdown 语言在 2004 由约翰格鲁伯&#xff08;英语&#xff1a;John Gruber&#xff09;创建。 Markdo…

openEuler 社区 2022 年 12 月运作报告

社区活跃度在社区所有开发者和用户的共同参与下&#xff0c;openEuler的3年持续迸发活力&#xff01;从0到超过1.27万名开发者&#xff0c;从0到超过100万的社区用户&#xff0c;从0到超过750家企业伙伴加入社区……截至目前&#xff0c;在大家的持续贡献下&#xff0c;openEul…

GemBox.Bundle 47.0.1012 VS Spire.Office Platinum 8.1.1

GemBox.Bundle 是一个 .NET 组件包&#xff0c;使您能够简单高效地处理办公文件&#xff08;电子表格、文档、演示文稿和电子邮件&#xff09;。 使用我们的组件&#xff0c;您可以以易于使用的形式快速获得可靠的结果。只需要 .NET&#xff0c;因此您可以轻松部署您的应用程序…

收官!OceanBase第五届技术征文大赛获奖名单公布!

OceanBase 一直在思考&#xff0c;什么样的数据库对用户而言更易用&#xff1f; 更易用&#xff0c;除了功能完善、性能优秀、运行稳定的数据库系统&#xff0c;丰富多样的生态工具也必不可少。 作为一款完全自主研发的原生分布式数据库&#xff0c;OceanBase 的生态工具经历…

基于Java SSM springboot+VUE+redis实现的前后端分类版网上商城项目

基于Java SSM springbootVUEredis实现的前后端分类版网上商城项目 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言…

路由 OSPF LSA介绍、1~7类LSA详细介绍

1.0.0 路由 OSPF LSA介绍、1~7类LSA详细介绍 OSPF LSA 链路状态通告( Link status announcement)&#xff0c;作用于 向其它邻接OSPF路由器 传递拓扑信息与路由信息。 LSA如何去描述拓扑信息与路由信息的呢&#xff1f; 其实是基于不同类型LSA进行描述&#xff0c;而常见的LS…

EquiBind模型源码分析

EquiBind模型源码分析 使用提供的模型权重来预测你自己的蛋白质配体对的结合结构 第 1 步:你需要什么作为输入 mol2或.sdf或.pdbqt或.pdb格式的配体文件&#xff0c;其名称包含字符串配体(配体文件应包含所有氢)。 .pdb格式的受体文件&#xff0c;其名称包含字符串protein。我…

leetcode.1819 序列中不同最大公约数的数目 - gcd + 枚举

1819. 序列中不同最大公约数的数目 目录 1、java版 2、c版 思路&#xff1a; 有n个元素的数组&#xff0c;则其子序列有 个&#xff0c;而1 ≤ n ≤ &#xff0c;则不可能枚举每一个子序列计算它的gcd&#xff0c;那样会tle我们可以逆转思路&#xff0c;因为1 ≤ nums[i]…

PhysioNet2017数据集介绍

一、数据集下载 PhysioNet2017为短单导联心电图记录的房颤分类数据集&#xff0c;下载地址如下&#xff1a;https://www.physionet.org/content/challenge-2017/1.0.0/ 二、数据集介绍 PhysioNet2017数据集主要用于对记录是否显示正常窦性心律、心房颤动&#xff08;AF&…

背包问题= =

一、01背包有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i件物品的体积是 vi&#xff0c;价值是 wi。求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。输出最大价值。&#xff08;下图是例子&#xff0c;一下…

14、ThingsBoard-自定义华为云SMS规则节点

1、概述 一个物联网平台承载着很多设备的连接,当设备出现异常的时候,能够快速的通知到运维管理员是非常重要的,thingsboard提供了自定义配置邮箱,但是它对支持发送短信的不是很友好,都是国外的sms服务商,我反正是不用那个,在国内常见就是阿里、腾讯、华为、七牛常用的s…

【Python百日进阶-数据分析】Day224 - plotly漏斗图px.funnel()

文章目录一、语法二、参数三、返回值四、实例4.1 使用 plotly.express 的漏斗图4.1.1 基本漏斗图4.1.2 堆积漏斗图4.1.3 基本区域漏斗图4.2 使用 plotly.graph_objects 的漏斗图4.2.1 基本漏斗图4.2.2 设置标记大小和颜色4.2.3 堆积漏斗图4.2.4 基本区域漏斗图4.2.5 在区域漏斗…

Postgresql遇到的问题

解决问题之前最好先下载个pgadmin可视化工具&#xff0c;下面可能要用到。先看图&#xff0c;了解基本的\n 代表是当前数据库下面schemas的文件\du 代表你有这写用户&#xff08;角色&#xff09;&#xff0c;后面代表的权限\l 代表的是你的数据库在敲命令之前你德先进去docker…