小程序學習筆記:導航、刷新、加載、生命周期

在小程序開發的領域中,掌握視圖與邏輯相關的技能是打造功能完備、用戶體驗良好應用的關鍵。今天,咱們就來深入梳理一下小程序視圖與邏輯的學習要點,并結合代碼示例,讓大家有更直觀的理解。

一、頁面之間的導航跳轉

在小程序里實現頁面跳轉主要有聲明式導航和編程式導航這兩種方式。

  1. 聲明式導航:借助?navigator?組件就能輕松實現。假設現在有兩個頁面,分別是?index?頁面和?detail?頁面,想要從?index?頁面跳轉到?detail?頁面,代碼可以這樣寫:
<navigator url="/pages/detail/detail" open-type="navigate">跳轉到詳情頁</navigator>

在這段代碼里,url 屬性指定了要跳轉的目標頁面路徑,open-type 屬性設置為 navigate 表示以普通跳轉的方式打開新頁面。
2. 編程式導航:需要用到微信提供的 API,比如 wx.navigateTo。還是以上面的兩個頁面為例,在 index 頁面的 js 文件里,可以這樣編寫代碼實現跳轉:

Page({goToDetail: function() {wx.navigateTo({url: '/pages/detail/detail'});}
});

然后在?index?頁面的?wxml?文件里添加一個按鈕來觸發這個跳轉函數:

<button bindtap="goToDetail">編程式跳轉到詳情頁</button>

二、實現下拉刷新效果

實現下拉刷新分兩步走,先開啟下拉刷新功能,再監聽下拉刷新事件。

  1. 開啟下拉刷新:在頁面的?json?配置文件里,添加?enablePullDownRefresh?屬性并將其值設為?true?即可。例如:
{"enablePullDownRefresh": true
}
  1. 監聽下拉刷新事件:在頁面的?js?文件里,通過?onPullDownRefresh?函數來監聽并處理下拉刷新事件。比如,當用戶下拉刷新時,我們從服務器獲取最新數據并更新頁面:
Page({data: {list: []},onPullDownRefresh: function() {wx.showLoading({title: '加載中...'});// 模擬從服務器獲取數據setTimeout(() => {const newData = [1, 2, 3];this.setData({list: newData});wx.hideLoading();wx.stopPullDownRefresh();}, 2000);}
});

在這段代碼里,wx.showLoading 用于顯示加載提示,setTimeout 模擬了從服務器獲取數據的過程,獲取到數據后通過 setData 更新頁面數據,最后用 wx.hideLoading 隱藏加載提示,wx.stopPullDownRefresh 停止下拉刷新的動畫效果。

三、實現上拉加載更多效果

實現上拉加載更多需要設置一個屬性和監聽一個事件。

設置上拉處理距離:在頁面的?json?配置文件里,添加?onReachBottomDistance?屬性來設置上拉觸底的距離,單位是?px。例如

{"onReachBottomDistance": 50
}
  1. 監聽上拉觸底事件:在頁面的?js?文件里,通過?onReachBottom?函數來監聽上拉觸底事件。當用戶上拉頁面到底部時,加載更多數據并追加到頁面現有數據中:
Page({data: {list: [1, 2, 3],page: 1},onReachBottom: function() {const page = this.data.page + 1;wx.showLoading({title: '加載中...'});// 模擬從服務器獲取更多數據setTimeout(() => {const newData = [4, 5, 6];const newList = this.data.list.concat(newData);this.setData({list: newList,page: page});wx.hideLoading();}, 2000);}
});

在這段代碼里,每次上拉觸底時,page?變量加 1,然后模擬從服務器獲取新數據,通過?concat?方法將新數據追加到現有數據列表中,最后更新頁面數據并隱藏加載提示。

四、小程序中常用的生命周期函數

小程序的生命周期函數分為應用的生命周期函數和頁面的生命周期函數。

  1. 應用的生命周期函數:總共只有三個,分別是?onLaunchonShow?和?onHide。在?app.js?文件里可以定義這些函數。
    • onLaunch:小程序初始化完成時觸發,在這里可以做一些全局的初始化操作,比如獲取用戶登錄態、初始化全局數據等。
App({onLaunch: function() {wx.getStorage({key: 'userInfo',success(res) {this.globalData.userInfo = res.data;}});},globalData: {userInfo: null}
});
  • onShow:小程序啟動,或從后臺進入前臺顯示時觸發,可以用來更新頁面顯示狀態。
  • onHide:小程序從前臺進入后臺時觸發,比如可以在這里暫停一些正在進行的任務。
  1. 頁面的生命周期函數:一個頁面有五個生命周期函數,分別是?onLoadonShowonReadyonHide?和?onUnload
    • onLoad:頁面加載時觸發,常用來獲取頁面的初始數據、接收頁面傳遞的參數等。
Page({data: {id: ''},onLoad: function(options) {this.setData({id: options.id});}
});
  • onShow:頁面顯示 / 切入前臺時觸發,用于更新頁面顯示內容。
  • onReady:頁面初次渲染完成時觸發,此時可以操作頁面節點,比如設置導航條標題。
Page({onReady: function() {wx.setNavigationBarTitle({title: '當前頁面'});}
});
  • onHide:頁面隱藏 / 切入后臺時觸發,可用于暫停頁面相關任務。
  • onUnload:頁面卸載時觸發,比如在頁面關閉時清理一些定時器、解綁事件等。

通過對上述小程序視圖與邏輯學習目標的詳細講解和代碼示例,希望大家能對這部分知識有更深入的理解和掌握,在小程序開發的道路上邁出更堅實的步伐

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89075.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89075.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89075.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

生成樹基礎實驗

以太網交換網絡中為了進行鏈路備份&#xff0c;提高網絡可靠性&#xff0c;通常會使用冗余鏈路。但是使用冗余鏈路會在交換網絡上產生環路&#xff0c;引發廣播風暴以及 MAC地址表不穩定等故障現象&#xff0c;從而導致用戶通信質量較差&#xff0c;甚至通信中斷。 為解決交換…

flex布局實例:把色子放進盒子里

目錄 一、flex布局實例&#xff1a;把色子放進盒子里 1、基礎樣式 二、justify-content 屬性 三、flex-direction 屬性 四、align-items 屬性 五、flex-wrap 屬性 二、flex布局應用到常見場景 非常詳細的講解flex布局&#xff0c;看一看&#xff0c;練一練&#xff01; …

Netty編解碼器

目錄 1、概念 2、Netty提供的編解碼器類型 2.1 解碼器 2.1.1 ByteToMessageDecoder 2.1.2 ReplayingDecoder 2.1.3 MessageToMessageDecoder 2.2 編碼器 2.2.1 MessageToByteEncoder 2.2.2 MessageToMessageEncoder 2.3 編解碼器 2.3.1 ByteToMessageCodec 2.3.2 M…

企業內部安全組網技術解析:安全通道選型、零信任架構與數據合規加密防護

一、引言&#xff1a;企業內部安全組網的重要性 隨著企業數字化轉型的深入以及遠程辦公需求的增加&#xff0c;企業內部異地組網逐漸成為企業信息技術部門關注的重要話題。如何在合規合法的前提下&#xff0c;保障企業內部網絡連接的安全性、穩定性&#xff0c;并有效保護企業…

Windows 4625日志類別解析:未成功的賬戶登錄事件

Windows 4625日志類別解析&#xff1a;未成功的賬戶登錄事件 什么是Windows 4625日志&#xff1f; Windows 4625日志屬于安全日志&#xff08;Security Log&#xff09; 的一部分&#xff0c;記錄系統中未成功的賬戶登錄嘗試&#xff08;Failed Logon&#xff09;。它是追蹤非…

3D看房實現房屋的切換

作為3D看房的補充&#xff0c;在這里&#xff0c;我們講一下如何實現房屋的切換&#xff0c;我這里提供兩種思路&#xff0c; 切換貼圖&#xff0c;切換場景&#xff0c; 接下我們按照較復雜的場景切換來講&#xff0c;切換貼圖也就水到渠成&#xff1a; 初始化場景&#xf…

[Android]ANR的線程

ANR的原理是進行了超時告警&#xff0c;在執行一個需要被監控的任務時&#xff0c;注冊一個超時提醒&#xff0c;如果很快執行好了&#xff0c;刪除這個提醒&#xff0c;如果超時&#xff0c;這個提醒就被觸發&#xff0c;這個超時處理是通過handler方式來調用的&#xff0c;這…

RLVR來做Agent任務能力增強訓練

和上一篇其實有點承接 上一篇的爭論其實是因為要優化agent的任務規劃和實現能力的 所以有了self-learning之爭 當我們說Self-learning&#xff0c;其實是在說什么&#xff1f; 其實上一篇最后時候提了一點拿RLVR來做agent的任務提升 正好今天看到了一篇應景的論文&#xf…

如何運營一個開源項目并取得較大影響力?

開源不僅是主要的軟件開發方法論&#xff0c;還是助力快速創新、分散協作、 生態系統建設和職業發展的卓越戰略。如今&#xff0c;無論在哪里&#xff0c;都離不開與 開源的互動。開源存在于你的手機、汽車和冰箱中&#xff0c;它使你最喜歡的節 目或電影的制作和發行成為可能&…

華為高斯數據庫的數據類型

華為高斯數據庫的數據類型 國產數據庫華為高斯的GaussDB的數據類型 華為高斯數據庫的數據類型? 一、數值類型&#xff08;Numeric Types&#xff09;? 二、字符類型&#xff08;Character Types&#xff09;? 三、布爾類型&#xff08;Boolean Type&#xff09;? 四、日期和…

生物實驗室安全、化學品安全

zhihu.com/column/c_1922752541369800632 Docs 目錄 第七章 7.1 實驗室生物安全等級 7.1.1 生物安全基本概念 7.1.2 生物的危害等級 7.1.2.1 國內生物危害等級 7.1.3 實驗室生物安全防護水平分級 7.2 實驗室生物安全控制 7.2.1 實驗室生物儀器設備安全控制 7.2.1.1 生…

【QT】第一個QT程序 || 對象樹 || 編碼時的注意事項

一、編寫第一個 Qt 程序 1. 開發環境搭建 安裝 Qt Creator&#xff08;推薦使用官方在線安裝器&#xff09;安裝 Qt 庫&#xff08;如 Qt 5.15.2 或 Qt 6.x&#xff09;配置編譯器&#xff08;MinGW / MSVC / GCC&#xff09; 2. 創建一個簡單的 Qt GUI 應用程序 打開 Qt C…

多服務器IP白名單配置(使用redis stream實現)

應用背景 現在我有一個管理平臺,可以通過代理連接到內網網站,但是這個代理服務器沒有設置密碼,所以需要IP白名單讓指定用戶才可以使用代理。 添加白名單流程圖 流程描述: 登錄管理平臺成功后,管理平臺的后臺將這個登錄的IP地址添加到redis,并設置過期時間為24小時redis…

Vue 3 Teleport 特性

目錄 基本用法? 搭配組件使用? 禁用 Teleport? 多個 Teleport 共享目標? 延遲解析的 Teleport ? 總結 <Teleport> 是一個內置組件&#xff0c;它可以將一個組件內部的一部分模板“傳送”到該組件的 DOM 結構外層的位置去。 基本用法? 有時我們可能會遇到這…

常用指令合集(DOS/Linux/git/Maven等)

文章目錄 常用指令收集vmware 虛擬機聯網設置ubuntu 常見問題設置apt 相關指令&#xff1a;gcc 編譯相關指令 sqlite3VSCode 快捷鍵&#xff1a;收索引擎技巧&#xff08;google&#xff09;Intelideashell--LinxvimgitDOS:mavendockerkubectl 指令nginx配置redis-clientMySQLl…

ABP VNext + MassTransit:構建分布式事務與異步消息協作

ABP VNext MassTransit&#xff1a;構建分布式事務與異步消息協作 &#x1f680; &#x1f4da; 目錄 ABP VNext MassTransit&#xff1a;構建分布式事務與異步消息協作 &#x1f680;&#x1f4da; 1. 背景與動機&#x1f6e0;? 2. 環境與依賴&#x1f527; 3. 在 ABP 模塊…

語義網技術

用通俗語言說語義網技術&#xff0c;以及它和現在互聯網的關系 一、語義網技術&#xff1a;讓網絡“聽懂人話”的智能升級 現有互聯網就像一本巨大的“圖文報紙”&#xff1a;我們人類看文章、圖片能輕松理解意思&#xff0c;但計算機只能識別文字符號&#xff0c;不知道“蘋…

pytorch學習—4.反向傳播(用pytorch算梯度)

2. 線性模型 3.梯度下降算法 4.反向傳播_嗶哩嗶哩_bilibili 4.1 代碼復現 import torch import matplotlib.pyplot as pltx_data=[1.0,2.0,3.0] y_data=[2.0,4.0,6.0]#這里創建了一個PyTorch張量w,初始值為1.0,并且設置requires_grad=True, #這意味著在計算過程中,PyTo…

7類茶葉嫩芽圖像分類數據集

在茶葉育種、溯源管理與自動采摘等智能農業場景中&#xff0c;茶樹品種的識別與分類是一項關鍵任務。不同茶葉品種在嫩芽期表現出顯著的形態差異&#xff0c;例如顏色、葉緣結構、芽頭密度等。因此&#xff0c;基于圖像的茶葉品種分類不僅具備實際應用價值&#xff0c;也為農業…

【Elasticsearch】Linux環境下安裝Elasticsearch

一&#xff0c;前言 Elasticsearch&#xff08;簡稱 ES&#xff09;是一個基于 ??Apache Lucene?? 構建的開源分布式搜索與分析引擎。它支持??實時數據處理??&#xff0c;提供近實時的全文搜索能力&#xff0c;并通過 ??JSON 格式的 RESTful API?? 實現數據索引與檢…