uniapp中常用的事件處理方法詳解
前言
UniApp 是一個跨平臺的開發(fā)框架,支持多種前端框架(Vue、React、Angular 等),并能打包成多種運行平臺(H5、小程序、App 等)。在 UniApp 中,事件處理非常重要,通過事件處理可以實現(xiàn)用戶與應(yīng)用程序之間的交互。下面是 UniApp 中常用的事件處理方式:
1. 綁定事件
在模板中可以通過 @ 符號綁定事件,例如:
<button @click="handleClick">點擊我</button> 這里綁定了一個 click 事件,并且綁定的函數(shù)是 handleClick。
2. 事件修飾符
事件修飾符是指在綁定事件時使用的一些特殊符號,用于修改事件的行為。常見的事件修飾符包括:
- prevent:阻止默認行為
- stop:阻止事件冒泡
- capture:使用事件捕獲模式
- self:只有當事件是從事件源本身觸發(fā)時才觸發(fā)回調(diào)函數(shù)
- once:只觸發(fā)一次回調(diào)函數(shù)
- passive:提高頁面滾動的流暢度
例如:
<!-- 阻止默認行為 --> <button @click.prevent="handleClick">點擊我</button> <!-- 阻止事件冒泡 --> <button @click.stop="handleClick">點擊我</button> <!-- 使用事件捕獲模式 --> <button @click.capture="handleClick">點擊我</button> <!-- 只有當事件是從事件源本身觸發(fā)時才觸發(fā)回調(diào)函數(shù) --> <button @click.self="handleClick">點擊我</button> <!-- 只觸發(fā)一次回調(diào)函數(shù) --> <button @click.once="handleClick">點擊我</button> <!-- 提高頁面滾動的流暢度 --> <button @click.passive="handleClick">點擊我</button>
.prevent 和 .stop 是兩種不同的事件修飾符,雖然它們有一些相似之處,但是在事件處理中有不同的作用。
1 .prevent 用于阻止事件的默認行為,例如阻止 <a> 標簽的默認跳轉(zhuǎn)、阻止表單的默認提交等。
如果一個事件被 .prevent 修飾符修飾了,則在事件觸發(fā)時,不會執(zhí)行事件的默認行為,而只會執(zhí)行`綁定的事件處理函數(shù)`。2 .stop 用于阻止事件的冒泡傳播,事件冒泡是指當一個元素觸發(fā)事件時,該事件會向父級元素傳播。
如果一個事件被 .stop 修飾符修飾了,則在事件觸發(fā)時,不會向上層元素傳播該事件,而只會在當前元素內(nèi)部進行處理。因此,.prevent 和 .stop 的作用是不同的,但是它們都能夠阻止事件的默認行為。
.prevent 用于阻止元素的默認行為,.stop 用于阻止事件的冒泡傳播。
具體示例: 當一個鏈接被點擊時,會觸發(fā) click 事件。如果鏈接沒有設(shè)置 href 屬性,則默認的行為是不進行跳轉(zhuǎn), 但如果設(shè)置了 href 屬性,則會跳轉(zhuǎn)到 href 指定的頁面。 在這種情況下,可以使用 .prevent 和 .stop 修飾符來阻止鏈接的默認跳轉(zhuǎn)行為和冒泡傳播。 我們給鏈接設(shè)置了 href 屬性,并綁定了 click 事件和 handleLinkClick 方法。 同時,我們在鏈接上使用了 .prevent 和 .stop 修飾符來阻止默認的跳轉(zhuǎn)行為和冒泡傳播。 <template> <div @click="handleDivClick">//上層點擊事件。用了檢測下面的點擊事件有沒有冒泡上來 <a rel="external nofollow" @click.prevent.stop="handleLinkClick">點擊我</a> </div> </template> <script> export default { methods: { handleLinkClick() { console.log('內(nèi)部事件————鏈接被點擊了'); }, handleDivClick() { console.log('外部事件————div 被點擊了'); } } }; </script> 在點擊鏈接時,控制臺會輸出 【內(nèi)部事件————鏈接被點擊了】 鏈接被點擊了,而不會進行跳轉(zhuǎn)。 同時,由于使用了 .stop 修飾符,事件也不會向上層元素冒泡傳播,因此點擊鏈接時不會觸發(fā)外部事件 handleDivClick 方法。 1、如果我們把 .prevent 修飾符去掉,點擊鏈接時會進行跳轉(zhuǎn)。說明默認行為存在,但是被阻止了。 2、如果把 .stop 修飾符去掉,點擊鏈接時會觸發(fā) handleDivClick 方法。說明點擊事件冒泡了。 這說明了 .prevent 和 .stop 修飾符的區(qū)別,.prevent 可以阻止默認行為,.stop 可以阻止冒泡傳播。 默認行為指的是元素在觸發(fā)某些事件時,瀏覽器會執(zhí)行的預(yù)設(shè)行為。 例如,當用戶點擊一個鏈接時,瀏覽器默認會跳轉(zhuǎn)到該鏈接所指定的 URL。當用戶提交一個表單時,瀏覽器默認會向服務(wù)器發(fā)送表單數(shù)據(jù)并刷新頁面。 這些行為是瀏覽器內(nèi)置的,可以通過 JavaScript 代碼來阻止或修改。
3. 內(nèi)置事件
在 UniApp 中,還有一些內(nèi)置事件可以使用。這些事件是指在特定情況下自動觸發(fā)的事件,例如:
- onLoad:頁面加載完成時觸發(fā)
- onReady:頁面初次渲染完成時觸發(fā)
- onShow:頁面展示時觸發(fā)
- onHide:頁面隱藏時觸發(fā)
- onUnload:頁面卸載時觸發(fā)
這些事件可以在頁面或組件中使用,例如:
export default { onLoad() { console.log('頁面加載完成'); }, onReady() { console.log('頁面初次渲染完成'); }, onShow() { console.log('頁面展示'); }, onHide() { console.log('頁面隱藏'); }, onUnload() { console.log('頁面卸載'); } }
4. 自定義事件
在 UniApp 中,還可以通過 uni. e m i t 和 u n i . emit 和 uni. emit和uni.on 方法來實現(xiàn)自定義事件的處理。例如:
// 發(fā)送自定義事件 uni.$emit('myEvent', {data: '自定義事件參數(shù)'}); // 監(jiān)聽自定義事件 uni.$on('myEvent', (data) => { console.log('接收到自定義事件', data); }); 這里通過 uni.$emit 發(fā)送了一個名為 myEvent 的自定義事件, 并傳遞了一個參數(shù) {data: '自定義事件參數(shù)'}。在需要監(jiān)聽該事件的地方, 可以使用 uni.$on 方法來監(jiān)聽該事件,并在回調(diào)函數(shù)中處理事件。
5. 事件對象
在事件處理函數(shù)中,可以通過 $event 參數(shù)來獲取事件對象,事件對象包含了事件的一些信息,例如:
- type:事件類型
- target:事件源
- currentTarget:當前組件
- detail:自定義數(shù)據(jù)
例如:
<button @click="handleClick">點擊我</button> methods: { handleClick($event) { console.log('事件類型', $event.type); console.log('事件源', $event.target); console.log('當前組件', $event.currentTarget); console.log('自定義數(shù)據(jù)', $event.detail); } }
以上就是 UniApp 中常用的事件處理方式,包括綁定事件、事件修飾符、內(nèi)置事件、自定義事件和事件對象。
掌握這些知識,可以更加靈活地處理事件,實現(xiàn)豐富的用戶交互效果。
總結(jié)
到此這篇關(guān)于uniapp中常用的事件處理方法的文章就介紹到這了,更多相關(guān)uniapp事件處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Auto.js?調(diào)用系統(tǒng)短信、電話模塊實現(xiàn)功能
這篇文章主要介紹了如何使用Auto.js調(diào)用系統(tǒng)短信與電話模塊,并實現(xiàn)讀取短信與聯(lián)系人的功能,并給出了實現(xiàn)相應(yīng)功能的代碼2023-03-03hash特點、hashchange事件介紹及其常見應(yīng)用場景
淺析hash特點、hashchange事件介紹及其常見應(yīng)用場景(不同hash對應(yīng)不同事件處理、移動端大圖展示狀態(tài)后退頁面問題、原生輕應(yīng)用頭部后退問題、移動端自帶返回按鈕二次確認問題),hashchange和popstate事件觸發(fā)條件2023-11-11JavaScript基礎(chǔ)之AJAX簡單的小demo
這篇文章主要介紹了JavaScript基礎(chǔ)之AJAX簡單的小demo ,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友參考下2017-01-01遨游,飛飛,IE,空中網(wǎng) 瀏覽器無提示關(guān)閉方法
遨游,飛飛,IE,空中網(wǎng) 瀏覽器無提示關(guān)閉方法,需要的朋友可以參考下。2011-07-07淺談js中Object.create()與new的具體實現(xiàn)與區(qū)別
本文主要介紹了js中Object.create()與new的具體實現(xiàn)與區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03uniapp開發(fā)小程序?qū)崿F(xiàn)滑動頁面控制元素的顯示和隱藏效果
這篇文章主要介紹了uniapp開發(fā)小程序?qū)崿F(xiàn)滑動頁面控制元素的顯示和隱藏效果,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12Javascript實現(xiàn)登錄記住用戶名和密碼功能
本文主要介紹了Javascript實現(xiàn)登錄記住用戶名和密碼功能的代碼。具有很好的參考價值。下面跟著小編一起來看下吧2017-03-03