Analisis mendalam tentang kitaran hayat uni-app
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.
Disyorkan: "tutorial uniapp"
Kitaran hayat aplikasi
uni-app
Menyokong hayat aplikasi berikut kitaran Fungsi:
Nama fungsi | Penerangan | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
onLaunch | Dicetuskan apabila
|
||||||||||||||||||
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 |
onInit
Nota 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 lalaiasync
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
|
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 | 挂载到实例上去之后调用。详见 注意:此处并不能确定子组件被全部挂载,如果需要子组件完全挂载之后在执行操作可以使用$nextTick Vue官方文档 |
||
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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

UniApp mempunyai banyak kemudahan sebagai rangka kerja pembangunan merentas platform, tetapi kelemahannya juga jelas: prestasi dihadkan oleh mod pembangunan hibrid, mengakibatkan kelajuan pembukaan yang lemah, pemaparan halaman dan tindak balas interaktif. Ekosistem tidak sempurna dan terdapat beberapa komponen dan perpustakaan dalam bidang tertentu, yang mengehadkan kreativiti dan merealisasikan fungsi kompleks. Isu keserasian pada platform berbeza terdedah kepada perbezaan gaya dan sokongan API yang tidak konsisten. Mekanisme keselamatan WebView adalah berbeza daripada aplikasi asli, yang mungkin mengurangkan keselamatan aplikasi. Keluaran dan kemas kini aplikasi yang menyokong berbilang platform pada masa yang sama memerlukan berbilang kompilasi dan pakej, meningkatkan kos pembangunan dan penyelenggaraan.

UniApp adalah berdasarkan Vue.js, dan Flutter adalah berdasarkan Dart kedua-duanya menyokong pembangunan merentas platform. UniApp menyediakan komponen yang kaya dan pembangunan mudah, tetapi prestasinya dihadkan oleh WebView Flutter menggunakan enjin pemaparan asli dengan prestasi cemerlang, tetapi lebih sukar untuk dibangunkan. UniApp mempunyai komuniti Cina yang aktif, dan Flutter mempunyai komuniti yang besar dan global. UniApp sesuai untuk senario dengan pembangunan pesat dan keperluan prestasi rendah Flutter sesuai untuk aplikasi kompleks dengan penyesuaian tinggi dan prestasi tinggi.

Langkah untuk melancarkan pratonton projek UniApp dalam WebStorm: Pasang pemalam Alat Pembangunan UniApp Sambung ke tetapan peranti Pratonton pelancaran WebSocket

Secara umumnya, uni-app adalah lebih baik apabila fungsi asli yang kompleks diperlukan; Selain itu, uni-app mempunyai: 1. Sokongan Vue.js/JavaScript 2. Komponen asli yang kaya 3. Ekosistem yang baik; Kelemahannya ialah: 1. Isu prestasi; 2. Kesukaran dalam menyesuaikan antara muka. MUI mempunyai: 1. Sokongan Reka Bentuk Bahan 2. Fleksibiliti tinggi 3. Perpustakaan komponen/tema yang luas. Kelemahannya ialah: 1. Kebergantungan CSS; 2. Tidak menyediakan komponen asli 3. Ekosistem kecil.

Selesaikan masalah ralat UniApp: Tidak dapat mencari kesan animasi 'xxx' UniApp ialah rangka kerja pembangunan aplikasi merentas platform berdasarkan rangka kerja Vue.js, yang boleh digunakan untuk membangunkan aplikasi untuk berbilang platform seperti applet WeChat, H5. , dan Apl. Semasa proses pembangunan, kami sering menggunakan kesan animasi untuk meningkatkan pengalaman pengguna. Walau bagaimanapun, kadangkala anda akan menghadapi ralat: Kesan animasi 'xxx' tidak dapat ditemui. Ralat ini akan menyebabkan animasi gagal berjalan seperti biasa, menyebabkan ketidakselesaan kepada pembangunan. Artikel ini akan memperkenalkan beberapa cara untuk menyelesaikan masalah ini.

Apabila memilih antara UniApp dan pembangunan asli, anda harus mempertimbangkan kos pembangunan, prestasi, pengalaman pengguna dan fleksibiliti. Kelebihan UniApp ialah pembangunan merentas platform, lelaran pantas, pembelajaran mudah dan pemalam terbina dalam, manakala pembangunan asli lebih unggul dalam prestasi, kestabilan, pengalaman asli dan kebolehskalaan. Timbang kebaikan dan keburukan berdasarkan keperluan projek khusus UniApp sesuai untuk pemula, dan pembangunan asli sesuai untuk aplikasi kompleks yang mengejar prestasi tinggi dan pengalaman yang lancar.

UniApp menggunakan HBuilder

pembangunan uniapp memerlukan asas berikut: teknologi bahagian hadapan (HTML, CSS, JavaScript) pengetahuan pembangunan mudah alih (platform iOS dan Android) Node.js asas lain (alat kawalan versi, IDE, simulator pembangunan mudah alih atau pengalaman penyahpepijatan mesin sebenar)
