Rumah >hujung hadapan web >uni-app >Analisis mendalam tentang kitaran hayat uni-app

Analisis mendalam tentang kitaran hayat uni-app

WBOY
WBOYke hadapan
2022-02-24 17:56:454210semak imbas

Artikel ini membawa anda pengetahuan yang berkaitan tentang kitaran pengisytiharan uniapp Ia terutamanya memperkenalkan isu yang berkaitan dengan kitaran pengisytiharan aplikasi, kitaran hayat halaman dan kitaran hayat komponen saya harap ia akan membantu semua orang.

Analisis mendalam tentang kitaran hayat uni-app

Disyorkan: "tutorial uniapp"

Kitaran hayat aplikasi

uni-app Menyokong hayat aplikasi berikut kitaran Fungsi:

Nama fungsi Penerangan
onLaunch Dicetuskan apabila
函数名 说明
onLaunch uni-app 初始化完成时触发(全局只触发一次)
onShow 当 uni-app 启动,或从后台进入前台显示
onHide 当 uni-app 从前台进入后台
onError 当 uni-app 报错时触发
onUniNViewMessage 对 nvue 页面发送的数据进行监听,可参考 nvue 向 vue 通讯
onUnhandledRejection 对未处理的 Promise 拒绝事件监听函数(2.8.1 )
onPageNotFound 页面不存在监听函数
onThemeChange 监听系统主题变化
permulaan selesai (hanya dicetuskan sekali secara global)
onShow Apabila Mulakan atau masukkan latar depan dari latar belakang
onHide Apabila masukkan latar belakang dari latar depan
onError Dicetuskan apabila melaporkan ralat
onUniNViewMessage untuk nvue halaman Untuk memantau data yang dihantar, sila rujuk nvue berkomunikasi dengan vue
onUnhandledRejection Tolak fungsi mendengar acara untuk Promise yang tidak diproses (2.8. 1) td>
onPageNotFound Halaman tidak mempunyai fungsi mendengar
onThemeChange Tukar tema sistem mendengar

Nota

  • Kitaran hayat aplikasi hanya boleh dipantau dalam App.vue dan pemantauan pada halaman lain adalah tidak sah.
  • Lompat halaman dalam pelancaran Jika anda menghadapi ralat skrin putih, sila rujuk navigasi untuk melompat halaman dalam kitaran hayat semasa pelancaran Nota - Soal Jawab DCloud
  • onPageNotFound Halaman sebenarnya telah dibuka (untuk. contoh, dengan berkongsi kad, kod program mini) dan didapati halaman itu tidak wujud, ia akan dicetuskan Lompatan api ke halaman yang tidak wujud tidak akan dicetuskan (seperti uni.navigateTo)

Kitaran hayat halaman

uni-app Menyokong fungsi kitaran hayat halaman berikut:

函数名 说明 平台差异说明 最低版本
onInit 监听页面初始化,其参数同 onLoad 参数,为上个页面传递的数据,参数类型为 Object(用于页面传参),触发时机早于 onLoad 百度小程序 3.1.0
onLoad 监听页面加载,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参),参考示例

onShow 监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面

onReady 监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发

onHide 监听页面隐藏

onUnload 监听页面卸载

onResize 监听窗口尺寸变化 App、微信小程序
onPullDownRefresh 监听用户下拉动作,一般用于下拉刷新,参考示例

onReachBottom 页面滚动到底部的事件(不是scroll-view滚到底),常用于下拉下一页数据。具体见下方注意事项

onTabItemTap 点击 tab 时触发,参数为Object,具体见下方注意事项 微信小程序、QQ小程序、支付宝小程序、百度小程序、H5、App
onShareAppMessage 用户点击右上角分享 微信小程序、QQ小程序、支付宝小程序、字节小程序、飞书小程序、快手小程序
onPageScroll 监听页面滚动,参数为Object nvue暂不支持
onNavigationBarButtonTap 监听原生标题栏按钮点击事件,参数为Object App、H5
onBackPress 监听页面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBack ;详细说明及使用:onBackPress 详解。支付宝小程序只有真机能触发,只能监听非navigateBack引起的返回,不可阻止默认行为。 app、H5、支付宝小程序
onNavigationBarSearchInputChanged 监听原生标题栏搜索输入框输入内容变化事件 App、H5 1.6.0
onNavigationBarSearchInputConfirmed 监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。 App、H5 1.6.0
onNavigationBarSearchInputClicked 监听原生标题栏搜索输入框点击事件(pages.json 中的 searchInput 配置 disabled 为 true 时才会触发) App、H5 1.6.0
onShareTimeline 监听用户点击右上角转发到朋友圈 微信小程序 2.8.1
onAddToFavorites 监听用户点击右上角收藏 微信小程序 2.8.1

onInitNota Penggunaan

  • Hanya Perpustakaan Asas Program Mini Baidu 3.260 atau ke atas menyokong kitaran hayat onInit
  • Versi atau platform lain boleh menggunakan kitaran hayat onLoad pada masa yang sama untuk keserasian, sila beri perhatian untuk mengelakkan pelaksanaan berulang bagi logik yang sama
  • Logik yang tidak bergantung pada parameter halaman boleh digantikan terus dengan kitaran hayat yang dicipta

onReachBottom Ambil perhatian bahawa pencetus di bahagian bawah halaman tertentu boleh ditakrifkan dalam pages.json Jarak onReachBottomDistance, sebagai contoh, ditetapkan kepada 50, kemudian apabila halaman itu ditatal ke 50px dari bawah, acara onReachBottom akan dicetuskan.

Jika paparan tatal digunakan dan halaman tidak tatal, acara bawah tidak akan dicetuskan. Untuk acara di mana tatal lihat tatal ke bawah, sila rujuk dokumen tatal paparan

onPageScroll (pemantauan tatal, dengar tatal, acara tatal) perihalan parameter:

属性 类型 说明
scrollTop Number 页面在垂直方向已滚动的距离(单位px)

Nota Jangan tulis js interaktif kompleks dalam

  • onPageScroll, seperti pengubahsuaian halaman yang kerap. Oleh kerana kitaran hayat ini dicetuskan dalam lapisan pemaparan, pada bahagian bukan h5, js dilaksanakan dalam lapisan logik dan terdapat kehilangan dalam komunikasi antara kedua-dua lapisan. Jika pertukaran data antara dua lapisan sering dicetuskan semasa proses menatal, ia boleh menyebabkan ketinggalan.
  • Jika anda ingin mencapai kecerunan telus bar tajuk semasa menatal, dalam Apl dan H5, anda boleh mengkonfigurasi jenis di bawah titleNView dalam pages.json supaya menjadi telus, sebagai rujukan.
  • Jika anda perlu menatal siling untuk menetapkan elemen tertentu, disyorkan untuk menggunakan reka letak melekit CSS dan merujuk kepada pasaran pemalam. Terdapat juga pemalam siling yang dilaksanakan oleh js dalam pasaran pemalam, tetapi prestasinya tidak baik Anda boleh mencarinya sendiri apabila diperlukan.
  • Dalam App, applet WeChat dan H5, anda juga boleh menggunakan wxs untuk memantau penatalan, untuk rujukan dalam app-nvue, anda boleh menggunakan bindingx untuk memantau penatalan, sebagai rujukan.
  • tidak boleh digunakan pada
  • onBackPress, yang akan mengakibatkan kegagalan untuk menghalang pengembalian lalai async
onPageScroll : function(e) { //nvue暂不支持滚动监听,可用bindingx代替
    console.log("滚动距离为:" + e.scrollTop);
},

Perihalan objek json yang dikembalikan: onTabItemTap

属性 类型 说明
index String 被点击tabItem的序号,从0开始
pagePath String 被点击tabItem的页面路径
text String 被点击tabItem的按钮文字

Nota

    onTabItemTap selalunya digunakan untuk mengklik pada tabitem semasa, tatal atau muat semula halaman semasa. Jika anda mengklik pada tabitem yang berbeza, penukaran halaman pasti akan dicetuskan.
  • Jika anda ingin mengklik tabitem di sebelah App tanpa melompat ke halaman, anda tidak boleh menggunakan onTabItemTap Anda boleh menggunakan plus.nativeObj.view untuk meletakkan blok untuk menutup tabitem asal dan memintas acara klik .
  • Platform program mini Alipay onTabItemTap dicetuskan selepas mengklik pada tabitem bukan semasa, jadi ia tidak boleh digunakan untuk melaksanakan operasi mengklik kembali ke atas
onTabItemTap : function(e) {
    console.log(e);
    // e的返回格式为json对象: {"index":0,"text":"首页","pagePath":"pages/index/index"}
},

Perihalan parameter: onNavigationBarButtonTap

属性 类型 说明
index Number 原生标题栏按钮数组的下标
onNavigationBarButtonTap : function (e) {
    console.log(e);
    // e的返回格式为json对象:{"text":"测试","index":0}
}

Perihalan objek parameter panggil balik: onBackPress

Atribut Jenis th> Penerangan
daripada String Sumber yang mencetuskan gelagat kembali: 'butang belakang' - butang bar navigasi penjuru kiri sebelah atas dan kekunci pulangan Android 'navigateBack' - kaedah uni.navigateBack(). Aplet Alipay tidak menyokong pemulangan medan ini
属性 类型 说明
from String 触发返回行为的来源:'backbutton'——左上角导航栏按钮及安卓返回键;'navigateBack'——uni.navigateBack() 方法。支付宝小程序端不支持返回此字段
export default {
    data() {
        return {};
    },
    onBackPress(options) {
        console.log('from:' + options.from)
    }
}

注意

  • nvue 页面weex编译模式支持的生命周期同weex,具体参考:weex生命周期介绍。
  • 支付宝小程序真机可以监听到非navigateBack引发的返回事件(使用小程序开发工具时不会触发onBackPress),不可以阻止默认返回行为

组件生命周期

uni-app 组件支持的生命周期,与vue标准组件的生命周期相同。这里没有页面级的onLoad等生命周期:

函数名 说明 平台差异说明 最低版本
beforeCreate 在实例初始化之后被调用。详见

created 在实例创建完成后被立即调用。详见

beforeMount 在挂载开始之前被调用。详见

mounted 挂载到实例上去之后调用。详见 注意:此处并不能确定子组件被全部挂载,如果需要子组件完全挂载之后在执行操作可以使用$nextTickVue官方文档

beforeUpdate 数据更新时调用,发生在虚拟 DOM 打补丁之前。详见 仅H5平台支持
updated 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。详见 仅H5平台支持
beforeDestroy 实例销毁之前调用。在这一步,实例仍然完全可用。详见

destroyed Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。详见

推荐:《uniapp教程

Atas ialah kandungan terperinci Analisis mendalam tentang kitaran hayat uni-app. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam