原生小程序生命周期,路由跳转,本地存储等详解

news2024/11/25 13:51:50

原生小程序生命周期,路由跳转,本地存储等详解

生命周期,路由跳转,本地存储等API详解
原生小程序(Native Mini Program)是一种在微信小程序平台上开发的小程序类型,与传统的小程序开发方式(基于小程序框架)不同,原生小程序更加灵活,但也需要开发者自行处理更多的细节和逻辑。下面是一些原生小程序的常用API和功能的详解总结:

在这里插入图片描述

小程序api - 生命周期

1.应用生命周期
  1. onLaunch

在小程序初始化时,会触发onLaunch生命周期函数。一般用于进行全局数据的初始化和获取,例如获取用户信息、检查登录状态等。

App({
  onLaunch: function () {
    // 小程序初始化时触发
    // 进行全局数据的初始化和获取
  }
})
  1. onShow - 小程序启动或切换到前台

当小程序启动或从后台切换到前台时,会触发onShow生命周期函数。在这个阶段,可以执行一些需要实时更新的操作,比如获取用户位置、更新数据等。

App({
  onShow: function () {
    // 小程序启动或切换到前台时触发
    // 执行一些需要实时更新的操作
  }
})
  1. onHide - 小程序切换到后台

当小程序切换到后台时,会触发onHide生命周期函数。在这个阶段,可以进行一些清理操作,比如保存用户数据、停止定时器等。

App({
  onHide: function () {
    // 小程序切换到后台时触发
    // 进行一些清理操作
  }
})
  1. onError - 小程序发生错误

当小程序发生错误时,会触发onError生命周期函数。一般用于捕捉并处理小程序运行时的异常情况,例如网络请求失败、数据解析错误等。

App({
  onError: function (error) {
    // 小程序发生错误时触发
    // 处理小程序运行时的异常情况
  }
})
2.页面生命周期
  1. onLoad

当页面加载时,会触发onLoad生命周期函数。一般在这个阶段进行页面初始化和数据加载的操作,例如请求数据、初始化参数等。

参数可以获取 wx.navigateTowx.redirectTo<navigator/> 中的 query

Page({
  onLoad: function (options) {
    // 页面加载时触发
    // 进行页面初始化和数据加载的操作
  }
})
 // options:页面跳转过来携带的参数对象
 onLoad(options) {
    console.log('App onLoad');
  },
  1. onShow

当页面显示时,会触发onShow生命周期函数。一般用于执行一些需要实时更新的操作,比如更新数据、刷新界面等。

页面显示。每次打开页面都会调用一次。

Page({
  onShow: function () {
    // 页面显示时触发
    // 执行一些需要实时更新的操作
  }
})
  1. onReady

当页面初次渲染完成时,会触发onReady生命周期函数。一般用于执行一些只能在页面初次渲染完成后才能进行的操作,比如操作 DOM 元素、绑定事件等。

对界面的设置如 wx.setNavigationBarTitle 请在 onReady 之后设置

Page({
  onReady: function () {
    // 页面初次渲染完成时触发
    // 执行一些只能在页面初次渲染完成后才能进行的操作
  }
})
  1. onHide

当页面隐藏时,会触发onHide生命周期函数。一般用于执行一些页面隐藏时需要处理的操作,比如停止动画、清除定时器等。

navigateTo 或底部 tab 切换时调用。

Page({
  onHide: function () {
    // 页面隐藏时触发
    // 执行一些页面隐藏时需要处理的操作
  }
})
  1. onUnload 页面卸载

当页面被卸载时,会触发onUnload生命周期函数。一般用于执行一些页面卸载时需要处理的操作,比如释放资源、取消订阅等。

当返回上一页wx.navigateBack、wx.relanch、wx.redirectTo时都会被调用

Page({
  onUnload: function () {
    // 页面卸载时触发
    // 执行一些页面卸载时需要处理的操作
  }
})
3.组件生命周期

组件生命周期指的是小程序中自定义组件从创建到销毁的整个过程。小程序的组件生命周期主要包含以下几个关键阶段:

  1. created

当组件实例被创建时,会触发created生命周期函数。在这个阶段,可以进行一些组件实例的初始化操作。

Component({
  created: function () {
    // 组件实例被创建时触发
    // 进行组件实例的初始化操作
  }
})
  1. attached - 组件被添加到页面节点树

当组件被添加到页面节点树时,会触发attached生命周期函数。一般用于执行一些组件加载和渲染的操作。

Component({
  attached: function () {
    // 组件被添加到页面节点树时触发
    // 执行一些组件加载和渲染的操作
  }
})
  1. ready - 组件初次渲染完成

当组件初次渲染完成时,会触发ready生命周期函数。一般用于执行一些只能在组件初次渲染完成后才能进行的操作。

Component({
  ready: function () {
    // 组件初次渲染完成时触发
    // 执行一些只能在组件初次渲染完成后才能进行的操作
  }
})
  1. detached - 组件被从页面节点树移除

当组件被从页面节点树移除时,会触发detached生命周期函数。一般用于执行一些组件卸载和清理的操作。

Component({
  detached: function () {
    // 组件被从页面节点树移除时触发
    // 执行一些组件卸载和清理的操作
  }
})

小程序api -跳转页面

  1. 标签跳转

    <navigator url="........"></navigator>
    
  2. wx.navigateTo

跳转后左上角有返回小箭头,点击可返回原本页面.

 wx.navigateTo({
      url: '/pages/calculator/calculator',
    })
  1. wx.redirectTo

关闭当前页面,跳转到应用内的某个页面、跳转后左上角没有返回小箭头

 wx.redirectTo({
      url: '/pages/calculator/calculator',
    })
  1. wx.switchTab

跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面;该方法只能跳转 tabbar 页面.

 wx.switchTab({
      url: '/pages/calculator/calculator',
    })
  1. wx.reLaunch

关闭所有页面,打开到应用内的某个页面。左上角不会出现返回箭头

 wx.reLaunch({
      url: '/pages/calculator/calculator',
    })

微信小程序本地存储

  • 异步存储:wx.setStorage

    • wx.setStorage({
        key:"key",
        data:"value",
        encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
        success() {
          //设置本地存储后的回调
        }
      }
      
  • 同步存储:wx.setStorageSync 存入一个数据,复杂类型数据不需要 JSON.stringify 处理

  • 异步获取:wx.getStorage

  • 同步获取:wx.getStorageSync 读取本地key数据,复杂类型数据不需要 JSON.parse 处理

  • wx.removeStorageSync(key) 删除本地key数据

  • wx.clearStorageSync()清空本地全部数据

小结:
wx.setStoragewx.setStorageSync的区别是:
wx.setStorage为异步存储–无论方法执行成功与否,都会继续向下执
wx.setStorageSync为同步存储–必须要同步方法处理完,程序才能继续向下执行
使用异步,性能会更好;而使用同步,数据会更安全。

在这里插入图片描述

以上就是原生小程序生命周期,路由跳转,本地存储等详解请求时感谢大家的阅读
如碰到其他的问题 可以私下我 一起探讨学习
如果对你有所帮助还请 点赞 收藏谢谢~!
关注收藏博客 作者会持续更新…

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

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

相关文章

合并两个升序链表,合并后也是升序的

开始时也要判断是否有一个链表本来就是空&#xff0c;如果是&#xff0c;直接返回另外一个链表 代码&#xff1a; struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){if(list1NULL){return list2;}if(list2NULL){return list1;} struct ListN…

VB Function过程求最大公约数和最小公倍数

VB Function过程求最大公约数和最小公倍数 Function过程求最大公约数和最小公倍数 Private Function gys(ByVal m%, ByVal n%) As IntegerDim r As IntegerDo 辗转相除法r m Mod nIf r 0 Then Exit Dom nn rLoopgys n End Function Private Sub Command1_Click()Dim a%, …

【EI会议信息】第五届土木建筑与城市工程国际学术会议(ICCAUE 2023)

第五届土木建筑与城市工程国际学术会议&#xff08;ICCAUE 2023&#xff09; 2023 5th International Conference on Civil Architecture and Urban Engineering (ICCAUE 2023) 第五届土木建筑与城市工程国际学术会议&#xff08;ICCAUE 2023&#xff09;由天津大学主办&…

听GPT 讲Istio源代码--pilot(5)

File: istio/pilot/pkg/serviceregistry/kube/controller/ambientindex.go ambientindex.go文件位于istio/pilot/pkg/serviceregistry/kube/controller目录中。它是Istio中Kubernetes服务注册表控制器的一部分&#xff0c;负责维护工作负载和服务之间的索引&#xff0c;以便快速…

「聊设计模式」之外观模式(Facade)

&#x1f3c6;本文收录于《聊设计模式》专栏&#xff0c;专门攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎持续关注&&收藏&&订阅&#xff01; 前言 设计模式是一种通用的解决问题的方式&#xff0c;它不仅仅…

MySQL常见面试题(二)

&#x1f600;前言 在数据库管理和操作中&#xff0c;我们常常需要深入理解其各种数据类型、特性和索引类型来优化我们的数据库设计和查询效率。其中&#xff0c;字符串类型和它们如何在MySQL中实现和使用成为了一个必不可少的知识点。同时&#xff0c;我们也需要理解新的特性&…

基于Java的高校实习管理系统设计与实现(亮点:实习记录、实习打分、实习作业,功能新颖、老师没见过、当场唬住!)

高校实习管理系统 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序&#xff08;小蔡coding&#xff09;2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述 五、系统主要功能5.1…

若依cloud -【 100 ~ 】

100 分布式日志介绍 | RuoYi 分布式日志就相当于把日志存储在不同的设备上面。比如若依项目中有ruoyi-modules-file、ruoyi-modules-gen、ruoyi-modules-job、ruoyi-modules-system四个应用&#xff0c;每个应用都部署在单独的一台机器里边&#xff0c;应用对应的日志的也单独存…

Vue 3 + TypeScript + jsplumb

网上搜了很久&#xff0c;没有找到基于vue3写的jsplumb&#xff0c;如是写了一个简单版&#xff0c;已开源 Vue 3 TypeScript jsplumb 支持回显&#xff0c;拖拽&#xff0c;连线的基础功能

十分钟理解OSPF路由协议

十分钟理解OSPF路由协议 1.RIP的缺陷以跳数为度量值最大跳数为15更新路由表采用全更新收敛速度慢 2.RIP与OSPF比较OSPF概述运行OSPF协议之前运行OSPF协议之后 3.OSPF协议工作过程1.发现邻居2.建立邻接关系3.传递链路状态信息4.计算路由 4.OSPF分区域管理 有RIP协议&#xff0c;…

Spring学习(三):MVC

一、什么是MVC MVC&#xff08;Model-View-Controller&#xff09;是一种软件设计模式&#xff0c;用于组织和管理应用程序的代码结构。它将应用程序分为三个主要部分&#xff0c;即模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;…

WPS 换行后缩进、加粗等自定义样式的清除

在使用WPS的Word编辑文字时&#xff0c;经常会出现换行后&#xff0c;自动缩进这种格式&#xff0c;需要清除这种样式&#xff0c;可以按照下图来操作&#xff1a;

无锡矽杰微电子----XC8P9520MCU之项目开发

上篇文章说了开发环境和烧录环境的配置以及安装&#xff0c;那么接下来就需要开发项目了。 Demo文件资料-无锡矽杰微电子有限公司 (xjmcu.com) 这里贴上矽杰微官网的资料下载专区&#xff0c;包括不同芯片的DEMO和上文所说的工具。 既然是项目开发&#xff0c;那么芯片的数据手…

SaaS架构C/S检验科LIS系统源码: 检验申请、标本编号、联机采集

适用于医院检验科实际需要的LIS管理系统, 实现检验业务全流程的计算机管理。从检验申请、标本编号、联机采集、中文报告单的生成与打印、质控图的绘制和数据的检索与备份。通过将所有仪器自身提供的端口与科室LIS系统中的工作站点连接,实现与医院HIS系统的对接。 通过门诊医生和…

无涯教程-JavaScript - MDETERM函数

描述 MDETERM函数返回数组的矩阵行列式。 语法 MDETERM (array)争论 Argument描述Required/OptionalArrayA numeric array with an equal number of rows and columns.Required Notes 数组可以作为单元格范围给出,如A1:C3;作为数组常量,如{1,2,3; 4,5,6; 7,8,9}&#xff1…

工业物联网大数据解决方案:排水设备远程监控和大数据统计系统

一、项目背景 给排水系统&#xff0c;作为城市的基础设施建设&#xff0c;是居民生产生活的必要保障。由于给排水系统通常站点零散分布&#xff0c;运维管理涉及的区域广泛&#xff0c;水位、流量、机泵运行等运行参数的测报&#xff0c;目前采取人工测量的&#xff0c;上令下…

如何评价低代码平台在企业复杂应用场景中的适用性?

随着编程语言的不断迭代、抽象、简化和整合&#xff0c;低代码技术正不断精进&#xff0c;形成更为简单清晰的图形化界面与高级语言结合的开发模式。在数字化转型方案的实施过程中&#xff0c;低代码开发广泛适用于各种应用场景&#xff0c;能够减少繁琐的重复性代码编写工作&a…

Docker安装与卸载

Docker安装与卸载 安装 yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken更新本地镜像源 打开终端或 SSH 连接到 Rocky Linux 的服务器。 进入 /etc/yum.repos.d/ 目录&#xff0c;该目录包含 Rocky Linux 的 yum 配置文件。 cd /etc/yum.repo…

二维码智慧门牌管理系统:提升城市管理效率与便捷性

文章目录 前言一、二维码智慧门牌管理系统的基本原理二、二维码智慧门牌管理系统的开发解决方案三、二维码智慧门牌管理系统的优势 前言 随着科技的不断发展&#xff0c;城市管理模式也在不断升级与优化。其中&#xff0c;二维码智慧门牌管理系统的出现&#xff0c;为城市管理…

电脑提示找不到msvcr120.dll无法继续执行代码,哪个修复方法更简单

电脑报错“找不到msvcr120.dll无法继续执行代码”。我相信&#xff0c;对于许多使用电脑的朋友来说&#xff0c;这个问题并不陌生。我们在使用电脑的过程中&#xff0c;可能会遇到各种各样的问题&#xff0c;其中就包括了找不到msvcr120.dll这个文件的问题。那么&#xff0c;这…