微信小程序功能實現:頁面導航與跳轉

1. 聲明式導航(navigator組件)

聲明式導航通過在WXML頁面中使用 <navigator> 組件來實現頁面跳轉,使用起來較為直觀簡便,語法格式如下:

<navigator url="目標頁面路徑" open-type="跳轉類型">顯示的跳轉提示文本或內容</navigator>

其中關鍵屬性說明如下:

url屬性:指定要跳轉到的頁面路徑,路徑需以“/”開頭,例如“/pages/detail/detail”,代表跳轉到小程序根目錄下的“pages/detail/detail”頁面。

open-type屬性:用于定義跳轉的具體類型,常見的有以下幾種:

(1)navigateTo

功能:保留當前頁面,新頁面會被添加到頁面棧中,用戶可通過返回按鈕返回之前的頁面。常用于從列表頁跳轉到詳情頁等場景,例如:

<navigator url="/pages/productDetail/productDetail?id=123" open-type="navigateTo">查看商品詳情</navigator>

在目標頁面(productDetail.js)中,可以在 onLoad 生命周期函數里獲取傳遞過來的參數:

Page({onLoad(options) {console.log(options.id); // 輸出 123}
})

(2)redirectTo

功能:關閉當前頁面,然后跳轉到指定頁面,當前頁面會從頁面棧中移除,新頁面入棧。適用于像表單提交成功后跳轉到結果頁這類不需要返回上一頁的情況,例如:

<navigator url="/pages/submitSuccess/submitSuccess" open-type="redirectTo">提交成功,前往查看結果</navigator>

(3)switchTab

功能:專門用于跳轉到小程序底部 tabBar 配置的頁面,跳轉時會關閉所有非 tabBar 頁面。比如從其他頁面切換回首頁(假設首頁是 tabBar 頁面),示例如下:

<navigator url="/pages/index/index" open-type="switchTab">返回首頁</navigator>

需注意,使用此方式跳轉的頁面路徑必須是在 app.json 中配置的 tabBar 頁面路徑。

(4)navigateBack

功能:用于返回上一頁或者多級頁面,可通過 delta 屬性指定返回的頁面層數,默認值為 1。例如:

<navigator open-type="navigateBack">返回上一頁</navigator>
<navigator open-type="navigateBack" delta="2">返回上兩頁</navigator>

2. 編程式導航(API調用)

編程式導航通過在 JavaScript 文件中調用相應的微信小程序 API 來實現頁面跳轉,這樣可以在跳轉前進行更多復雜的邏輯判斷和操作,常用的 API 如下:

wx.navigateTo:功能與聲明式導航中 open-type="navigateTo" 一致,通過傳入包含 url 的對象參數來實現跳轉,示例代碼如下:

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

在對應的 WXML 文件中綁定點擊事件來觸發這個函數,比如:

<button bind:tap="goToDetail">跳轉到詳情頁</button>

wx.redirectTo:等同于聲明式導航里的 open-type="redirectTo",示例如下:

Page({goToNextPage() {wx.redirectTo({url: "/pages/nextPage/nextPage"});}
})

wx.switchTab:用于跳轉到 tabBar 頁面,使用方式如下:

Page({goToHome() {wx.switchTab({url: "/pages/index/index"});}
})

wx.navigateBack:與聲明式導航的對應功能相同,可按指定層數返回頁面,示例:

Page({goBack() {wx.navigateBack({delta: 1});}
})

并且,編程式導航在跳轉前可以進行各種邏輯判斷,比如判斷用戶是否登錄,只有登錄了才允許跳轉到某些頁面:

Page({jumpToPersonalPage() {const isLoggedIn = wx.getStorageSync('userToken'); // 假設從本地存儲獲取登錄狀態if (isLoggedIn) {wx.navigateTo({url: "/pages/personal/personal"});} else {wx.showToast({title: '請先登錄',icon: 'none'});setTimeout(() => {wx.navigateTo({url: "/pages/login/login"});}, 2000);}}
})

3. 頁面棧管理

微信小程序的頁面棧用于記錄用戶訪問過的頁面順序,每個小程序有一個頁面棧,最多可容納 10 個頁面。可以通過 getCurrentPages() 函數獲取當前頁面棧的實例數組,例如:

const pages = getCurrentPages();
console.log(pages.length); // 輸出當前頁面棧的頁面數量
const currentPage = pages[pages.length - 1]; // 獲取當前頁面實例
const prevPage = pages[pages.length - 2]; // 獲取上一頁面實例(常用于反向傳遞數據)

利用頁面棧,在子頁面返回父頁面時,可以將數據傳遞回去,示例如下:

// 子頁面(假設為 childPage.js)
Page({backToParentAndPassData() {const pages = getCurrentPages();const prevPage = pages[pages.length - 2];const dataToPass = { message: '這是從子頁面傳遞的數據' };prevPage.setData({ receivedData: dataToPass });wx.navigateBack();}
})// 父頁面(假設為 parentPage.js)
Page({data: {receivedData: null}
})

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

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

相關文章

GenieWizard: Multimodal App Feature Discovery with LargeLanguage Models

GenieWizard:使用LargeLanguage模型發現多模式應用程序功能 以下是對論文《GenieWizard: Multimodal App Feature Discovery with Large Language Models》的詳細總結,結合教育技術學視角的分析: 一、核心問題與背景 問題背景: 多模態交互(如語音+觸摸)比傳統圖形交互更靈…

[硬件電路-120]:模擬電路 - 信號處理電路 - 在信息系統眾多不同的場景,“高速”的含義是不盡相同的。

一、按照維度區分在信息系統中&#xff0c;“高速”是一個相對且多維的概念&#xff0c;其核心在于信號或數據的動態變化速率遠超傳統系統處理能力&#xff0c;導致必須采用專門的設計技術來保障傳輸質量與實時性。這一概念可從以下四個維度解析&#xff1a;1、頻率維度&#x…

React ahooks——副作用類hooks之useThrottleFn

useThrottleFn 用于創建一個節流函數&#xff0c;確保該函數在指定時間內最多執行一次。一、基本使用import { useThrottleFn } from ahooks; import { Button, Space } from antd;const ThrottleDemo () > {const { run, cancel, flush } useThrottleFn((message) > {…

PostgreSQL——函數

PostgreSQL函數一、數學函數1.1、絕對值函數ABS(x)和圓周率函數PI()1.2、平方根函數SQRT(x)和求余函數MOD(x,y)1.3、取整函數CEIL(x)、CEILING(x)和FLOOR(x)1.4、四舍五入函數ROUND(x)和ROUND(x,y)1.5、符號函數SIGN(x)1.6、冪運算函數POW(x,y)、POWER(x,y)和EXP(x)1.7、對數運…

ffmpeg下載windows教程

1.百度搜索ffmpeg&#xff0c;進入官網2.點擊Download3.點擊windows圖標&#xff0c;選擇藍色框內的點擊4.點擊藍色框內帶有win64下載5.下載完好打開bin&#xff0c;看到3個exe文件6.打開cmd文件輸入 ffmpeg -version &#xff0c;出現以下畫面證明安裝成功7.然后添加環…

解鎖高并發LLM推理:動態批處理、令牌流和使用vLLM的KV緩存秘密

網羅開發&#xff08;小紅書、快手、視頻號同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企業從事人工智能項目研發管理工作&#xff0c;平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

跨域場景下的Iframe事件監聽

背景在當前window窗口&#xff0c;對于一些浮窗組件&#xff0c;一般需要點擊當前window下的其他位置才能夠隱藏浮窗。但如果當前窗口中存在iframe區域&#xff0c;那么由于一些特殊的性質&#xff0c;無法通過常規的click點擊事件監聽iframe元素的點擊&#xff0c;而通過conte…

零知識證明入門應用指南:原理與Python實踐

目錄 零知識證明入門應用指南:原理與Python實踐 1. 引言:隱私計算的革命 2. 零知識證明基礎原理 2.1 數學基礎:離散對數問題 2.2 基本協議流程 2.3 核心概念 3. Schnorr協議:經典ZKP實現 3.1 協議數學描述 3.2 Python實現 4. 非交互式證明:Fiat-Shamir變換 4.1 原理 4.2 P…

PyTorch中三角函數與特殊運算詳解和實戰場景示例

在 PyTorch 中&#xff0c;三角函數&#xff08;如 sin, cos, tan 等&#xff09;和一些特殊數學運算&#xff08;如雙曲函數、反三角函數、hypot, atan2, clamp, lerp, sigmoid, softplus, special 模塊等&#xff09;被廣泛用于科學計算、機器學習、深度學習中的前向推理或梯…

論文閱讀: Mobile Edge Intelligence for Large LanguageModels: A Contemporary Survey

地址&#xff1a;Mobile Edge Intelligence for Large Language Models: A Contemporary Survey 摘要 設備端大型語言模型&#xff08;LLMs&#xff09;指在邊緣設備上運行 LLMs&#xff0c;與云端模式相比&#xff0c;其成本效益更高、延遲更低且更能保護隱私&#xff0c;因…

JavaWeb(蒼穹外賣)--學習筆記17(Websocket)

前言 本篇文章是學習B站黑馬程序員蒼穹外賣的學習筆記&#x1f4d1;。我的學習路線是Java基礎語法-JavaWeb-做項目&#xff0c;管理端的功能學習完之后&#xff0c;就進入到了用戶端微信小程序的開發&#xff0c;&#x1f64c;用戶下單并且支付成功后&#xff0c;需要第一時間通…

WebForms 簡介

WebForms 簡介 概述 WebForms 是微軟公司推出的一種用于構建動態網頁和應用程序的技術。自 2002 年推出以來,WebForms 成為 ASP.NET 技術棧中重要的組成部分。它允許開發者以類似于桌面應用程序的方式創建交互式網頁,極大地提高了 Web 開發的效率和體驗。 WebForms 的工作…

vsCode軟件中JS文件中啟用Emmet語法支持(React),外加安裝兩個常用插件

1.點擊vsCode軟件中的設置&#xff08;就是那個齒輪圖標&#xff09;&#xff0c;如下圖2.在搜索框中輸入emmet&#xff0c;然后點擊添加項&#xff0c;填寫以下值&#xff1a;項&#xff1a;javascript 值&#xff1a;javascriptreact。如下圖3.可以安裝兩個常用插件&#xf…

【第2話:基礎知識】 自動駕駛中的世界坐標系、車輛坐標系、相機坐標系、像素坐標系概念及相互間的轉換公式推導

自動駕駛中的坐標系概念及相互間的轉換公式推導 在自動駕駛系統中&#xff0c;多個坐標系用于描述車輛、傳感器和環境的相對位置。這些坐標系之間的轉換是實現定位、感知和控制的關鍵。下面我將逐步解釋常見坐標系的概念&#xff0c;并推導相互轉換的公式。推導基于標準幾何變換…

深度拆解Dify:開源LLM開發平臺的架構密碼與技術突圍

注&#xff1a;此文章內容均節選自充電了么創始人&#xff0c;CEO兼CTO陳敬雷老師的新書《GPT多模態大模型與AI Agent智能體》&#xff08;跟我一起學人工智能&#xff09;【陳敬雷編著】【清華大學出版社】 清華《GPT多模態大模型與AI Agent智能體》書籍配套視頻課程【陳敬雷…

tomcat處理請求流程

1.瀏覽器在請求一個servlet時,會按照HTTP協議構造一個HTTP請求,通過Socket連接發送給Tomcat. 2.Tomcat通過不同的IO模型接收到Socket的字節流數據。 3.接收到數據后,按照HTTP協議解析字節流,得到HttpServletRequest對象 4.通過HttpServletRequest對象,也就是請求信息,找到該請求…

【音視頻】WebRTC 一對一通話-信令服

一、服務器配置 服務器在Ubuntu下搭建&#xff0c;使用C語言實現&#xff0c;由于需要使用WebSocket和前端通訊&#xff0c;同時需要解析JSON格式&#xff0c;因此引入了第三方庫&#xff1a;WebSocketpp和nlonlohmann&#xff0c;這兩個庫的具體配置方式可以參考我之前的博客…

Spring(以 Spring Boot 為核心)與 JDK、Maven、MyBatis-Plus、Tomcat 的版本對應關系及關鍵注意事項

以下是 Spring&#xff08;以 Spring Boot 為核心&#xff09;與 JDK、Maven、MyBatis-Plus、Tomcat 的版本對應關系及關鍵注意事項&#xff0c;基于最新技術生態整理&#xff1a; 一、Spring Boot 與 JDK 版本對應 Spring Boot 2.x 系列 最低要求&#xff1a;JDK 1.8推薦版本…

03-基于深度學習的鋼鐵缺陷檢測-yolo11-彩色版界面

目錄 項目介紹&#x1f3af; 功能展示&#x1f31f; 一、環境安裝&#x1f386; 環境配置說明&#x1f4d8; 安裝指南說明&#x1f3a5; 環境安裝教學視頻 &#x1f31f; 二、系統環境&#xff08;框架/依賴庫&#xff09;說明&#x1f9f1; 系統環境與依賴配置說明&#x1f4c…

24. 前端-js框架-Vue

文章目錄前言一、Vue介紹1. 學習導圖2. 特點3. 安裝1. 方式一&#xff1a;獨立版本2. 方式二&#xff1a;CDN方法3. 方式三&#xff1a;NPM方法&#xff08;推薦使用&#xff09;4. 搭建Vue的開發環境&#xff08;大綱&#xff09;5. 工程結構6. 安裝依賴資源7. 運行項目8. Vue…