> 参考文档:[https://uniapp.dcloud.io/frame?id=生命周期](https://uniapp.dcloud.io/frame?id=%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F)
* [应用生命周期](https://www.kancloud.cn/wangking/uniapp/1865516#_2)
* [](https://www.kancloud.cn/wangking/uniapp/1865516#httpsuniappdcloudioframeide9a1b5e99da2e7949fe591bde591a8e69c9f_23)[页面生命周期](https://uniapp.dcloud.io/frame?id=%e9%a1%b5%e9%9d%a2%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f)
* [代码案例](https://www.kancloud.cn/wangking/uniapp/1865516#_96)
### 应用生命周期
`uni-app`支持如下应用生命周期函数:
| 函数名 | 说明 |
| --- | --- |
| onLaunch | 当`uni-app`初始化完成时触发(全局只触发一次) |
| onShow | 当`uni-app`启动,或从后台进入前台显示 |
| onHide | 当`uni-app`从前台进入后台 |
| onError | 当`uni-app`报错时触发 |
| onUniNViewMessage | 对`nvue`页面发送的数据进行监听,可参考[nvue 向 vue 通讯](https://uniapp.dcloud.io/use-weex?id=nvue-%e5%90%91-vue-%e9%80%9a%e8%ae%af) |
| onUnhandledRejection | 对未处理的 Promise 拒绝事件监听函数(2.8.1+) |
| onPageNotFound | 页面不存在监听函数 |
| onThemeChange | 监听系统主题变化 |
**注意**
* 应用生命周期仅可在`App.vue`中监听,在其它页面监听无效。
* onlaunch里进行页面跳转,如遇白屏报错,请参考[https://ask.dcloud.net.cn/article/35942](https://ask.dcloud.net.cn/article/35942)
### [页面生命周期](https://uniapp.dcloud.io/frame?id=%e9%a1%b5%e9%9d%a2%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f)
`uni-app`支持如下页面生命周期函数:
| 函数名 | 说明 | 平台差异说明 |
| --- | --- | --- |
| onLoad | 监听页面加载 | |
| onShow | 监听页面显示 | |
| onReady | 监听页面初次渲染完成 | |
| onHide | 监听页面隐藏 | |
| onUnload | 监听页面卸载 | |
| onResize | 监听窗口尺寸变化 | App、微信小程序 |
| onPullDownRefresh | 监听用户下拉动作,一般用于下拉刷新 | |
| onReachBottom | 页面上拉触底事件的处理函数 | |
| onTabItemTap | 点击 tab 时触发 | 微信小程序、百度小程序、H5、App(自定义组件模式) |
| onShareAppMessage | 用户点击右上角分享 | 微信小程序、百度小程序、字节跳动小程序、支付宝小程序 |
| onPageScroll | 监听页面滚动 | |
| onNavigationBarButtonTap | 监听原生标题栏按钮点击事件 | 5+ App、H5 |
| onBackPress | 监听页面返回 | App、H5 |
| onNavigationBarSearchInputChanged | 监听原生标题栏搜索输入框输入内容变化事件 | App、H5 |
| onNavigationBarSearchInputConfirmed | 监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。 | App、H5 |
| onNavigationBarSearchInputClicked | 监听原生标题栏搜索输入框点击事件 | App、H5 |
| onShareTimeline | 监听用户点击右上角转发到朋友圈 | 微信小程序 |
| onAddToFavorites | 监听用户点击右上角收藏 | 微信小程序 |
`onPageScroll`参数说明:
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| scrollTop | Number | 页面在垂直方向已滚动的距离(单位px) |
`onTabItemTap`参数说明:
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| index | String | 被点击tabItem的序号,从0开始 |
| pagePath | String | 被点击tabItem的页面路径 |
| text | String | 被点击tabItem的按钮文字 |
**注意**
* onTabItemTap常用于点击当前tabitem,滚动或刷新当前页面。如果是点击不同的tabitem,一定会触发页面切换。
* 如果想在App端实现点击某个tabitem不跳转页面,不能使用onTabItemTap,可以使用[plus.nativeObj.view](http://www.html5plus.org/doc/zh_cn/nativeobj.html)放一个区块盖住原先的tabitem,并拦截点击事件。
* onTabItemTap在App端,从HBuilderX 1.9 的自定义组件编译模式开始支持。
* 避免在 onShow 里使用需要权限的 API(比如 setScreenBrightness() 等需要手机权限), 可能会再次触发onShow造成死循环。
`onNavigationBarButtonTap`参数说明:
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| index | Number | 原生标题栏按钮数组的下标 |
`onBackPress`回调参数对象说明:
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| from | String | 触发返回行为的来源:'backbutton'——左上角导航栏按钮及安卓返回键;'navigateBack'——uni.navigateBack() 方法。 |
~~~
export default {
data() {
return {};
},
onBackPress(options) {
console.log('from:' + options.from)
}
}
~~~
**注意**
* nvue 页面支持的生命周期参考:[nvue 生命周期介绍](https://uniapp.dcloud.io/use-weex?id=%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f)。
### 代码案例
~~~
<template>
<view class="content">
<image class="logo" src="../../static/image/myHover.png" @click="tap"></image>
<view>
<text class="title">{{title}}</text>
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
console.log('页面加载')
},
onShow() {
console.log('页面显示')
},
onReady(){
console.log('页面初次显示')
},
onHide() {
console.log('页面隐藏')
},
onUnload() {
console.log('页面卸载')
},
onBackPress(){
console.log('页面返回...')
},
onShareAppMessage() {
console.log('分享!')
},
onReachBottom() {
console.log('下拉加载...')
},
onPageScroll(){
console.log('页面滚动...')
},
onPullDownRefresh() {
console.log('上拉刷新...')
uni.stopPullDownRefresh();
},
// #ifdef APP-PLUS
onNavigationBarButtonTap(){
},
// #endif
methods: {
tap(){
console.log('tap点击!');
}
}
}
</script>
~~~
- 基础知识
- UNI核心介绍
- flex布局
- 生命周期
- 全局方法
- 组件定义
- 自定义组件
- 全局组件
- 组件之间的数据传输
- 条件编译
- 自定义头部
- 节点信息 (SelectorQuery)
- vuejs基础语法
- 页面跳转以及参数传递
- 事件的监听注册以及触发
- css3动画
- block的妙用
- mixin (混入)
- uniapp快捷键
- vuex状态管理
- 实用功能
- 获取服务提供商
- 启动页 / 启动界面
- 引导页
- tabbar配置
- 头部导航栏基础设置
- 上拉下拉(刷新/加载)
- 第三方登录
- 第三方分享
- 推送通知 之 unipush
- scroll-view双联动
- 配置iOS通用链接(Universal Links)
- 本地缓存操作
- 升级/更新方案
- 热更新
- 图片上传
- 搜索页实现
- canvas绘图助手
- 地图定位
- 第三方支付————todo
- 分类轮播
- 清除应用缓存
- uniapp与webview的实时通讯
- 视频-----todo
- 聊天----todo
- 长列表swiper左右切换
- 第三方插件
- uview
- mescroll
- uCharts (图表)
- 无名 (更新插件)
- 第三方模版
- 自定义基座
- 打包发行
- 要封装的方法
- 缓存 cache.js
- 请求接口 request.js
- 工具类 util.js
- 小程序登录 xcxLogin.js
- 版本更新 update.js
- 优质插件
- 更新插件----todo
- 语音
- 语音识别 (含上传)
- 百度语音合成播报接口
- 官方常用组建
- input 输入框
- image 图片
- audio 音频
- picker 选择器
- video 视频
- scroll-view 滚动视图
- uni-app 地图全解析+事件监听