微信小程序(路由傳參)

微信小程序的路由系統和其他Web應用類似,主要通過頁面路徑和URL參數進行頁面導航和數據傳遞。下面詳細介紹微信小程序路由的基本使用方法和相關技巧。

1. 基本頁面導航

1.1 配置頁面路徑

在微信小程序的 app.json 文件中,需要配置小程序的頁面路徑。這里定義了小程序中包含的所有頁面路徑。

{"pages": ["pages/index/index","pages/detail/detail"]
}
1.2 使用導航 API 跳轉頁面

微信小程序提供了多種導航 API,可以在頁面之間進行跳轉。

wx.navigateTo保留當前頁面,跳轉到應用內的某個頁面,使用 wx.navigateBack 可以返回到原頁面
wx.redirectTo關閉當前頁面,跳轉到應用內的某個頁面
wx.switchTab跳轉到指定的 tabBar 頁面,并關閉其他所有非 tabBar 頁面
wx.reLaunch關閉所有頁面,打開到應用內的某個頁面

?

?

例子:使用 wx.navigateTo 跳轉頁面
 
wx.navigateTo({url: '/pages/detail/detail?id=123&name=John'
});

2. URL 參數傳遞

2.1 傳遞參數

在跳轉頁面時,可以在 URL 中附加參數,例如上面的例子中,我們在 URL 中附加了 idname 參數。

2.2 獲取參數

在目標頁面的 onLoad 方法中,可以通過 options 參數獲取傳遞過來的參數:

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

3. 動態構建 URL 參數

有時需要傳遞動態生成的參數,可以通過字符串拼接或模板字符串來實現:

const id = 123;
const name = 'John';
wx.navigateTo({url: `/pages/detail/detail?id=${id}&name=${name}`
});

4. 復雜數據傳遞

如果需要傳遞復雜的數據(例如對象或數組),可以將數據轉換為 JSON 字符串傳遞,并在目標頁面進行解析。

4.1 傳遞 JSON 字符串
const data = {id: 123,name: 'John',items: [1, 2, 3]
};
wx.navigateTo({url: `/pages/detail/detail?data=${encodeURIComponent(JSON.stringify(data))}`
});

4.2 解析 JSON 字符串

在目標頁面中,通過 decodeURIComponentJSON.parse 解析數據:

 
Page({onLoad: function (options) {const data = JSON.parse(decodeURIComponent(options.data));console.log(data.id);   // 輸出 123console.log(data.name); // 輸出 Johnconsole.log(data.items);// 輸出 [1, 2, 3]}
});

5. 使用全局數據或本地存儲

當傳遞的數據過大或復雜時,URL 參數可能不是最佳選擇。可以使用全局數據或本地存儲。

5.1 使用全局數據

app.js 中定義全局數據:

App({globalData: {userInfo: null}
});

在頁面中設置和獲取全局數據:

// 設置全局數據
const app = getApp();
app.globalData.userInfo = {id: 123,name: 'John'
};// 獲取全局數據
Page({onLoad: function () {const app = getApp();const userInfo = app.globalData.userInfo;console.log(userInfo.id);   // 輸出 123console.log(userInfo.name); // 輸出 John}
});

5.2 使用本地存儲

通過 wx.setStorageSync wx.getStorageSync 來存儲和獲取數據:

// 設置本地存儲
wx.setStorageSync('userInfo', {id: 123,name: 'John'
});// 獲取本地存儲
Page({onLoad: function () {const userInfo = wx.getStorageSync('userInfo');console.log(userInfo.id);   // 輸出 123console.log(userInfo.name); // 輸出 John}
});

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

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

相關文章

哪有異地組網的工具?

不同地區的電腦與電腦、設備與設備、電腦與設備之間的信息遠程通信,一直是企業和個人面臨的難題。通過使用天聯組網的解決方案,這個問題將迎刃而解。 天聯組網解決方案 天聯組網是一種可以實現不同地區之間電腦、設備及其之間的信息遠程通信的解決方案。…

Trie字符串統計-java

Trie,又稱前綴樹或字典樹,是一種有序樹,用于保存關聯數組,其中的鍵通常是字符串。 目錄 前言? 一、Trie字符串統計? 二、算法思路? 1.Trie樹定義🌙 2.變量解釋🌙 3.插入操作🌙 4.Trie樹查找操…

vim文本編輯器相關用法

1. 引言 Vim,一個功能強大的文本編輯器,它在程序員和系統管理員中廣受歡迎。Vim是Vi的增強版,提供了一系列高級功能,包括語法高亮、代碼補全、多窗口編輯等。 2. Vim的安裝 Vim的安裝過程在不同的Linux發行版中略有不同。以下是…

MapStruct高級用法

MapStruct高級用法 依賴注入(Using dependency injection) Mapper(componentModel SPRING) public interface SpringMapper {SpringMapper MAPPER Mappers.getMapper(SpringMapper.class);PersonDTO personDoToDTO(Person person); }public static fin…

【class18】人工智能初步----語音識別(4)

【class17】 上節課,我們學習了: 語音端點檢測的相關概念,并通過代碼切分和保存了音頻。 本節課,我們將學習這些知識點:1. 序列到序列模型2. 循環神經網絡3. 調用短語音識別接口 知其然,知其所以然 在調用語…

數組單調棧-901. 股票價格跨度、leetcode

單調棧作為一種數據結構在求解類遞增、遞減方面的題目中有較為廣泛的應用,在以往的leetcode中所見到的相關單調棧的題目均為單一元素,今天刷到901題目時,想到了將數組元素作為單調棧中元素的方法進行求解。 題目鏈接及描述 901. 股票價格跨…

【c++leetcode】69. Sqrt(x)

問題入口 二分搜索 最困難的是能否意識到用二分搜索法解題。 算術平方根的區間在[1, x] 。代碼如下&#xff1a; class Solution { public:int mySqrt(int x) {if (x 1 || x 0){return x;}int64_t start 1;int64_t end x;while (start < x){int64_t mid start (en…

開源模型應用落地-Gradio正確集成Fastapi-助力模型交互-實踐篇(二)

一、前言 Gradio提供了直觀的用戶界面,當與Fastapi結合后,用戶可以通過界面輕松地與模型進行交互,上傳數據、獲取推理結果等,使得交互性增強,提升了用戶體驗。 在開源大語言模型遍地開花的時代,正確的使用Gradio和Fastapi,通過兩者的集成,使得模型的部署和使用過程更加…

以果決其行,只為文化的傳承

從他們每一個人的身上&#xff0c;我們看到傳神的東西&#xff0c;就是他們都能用結果&#xff0c;去指引自己前進的方向&#xff0c;這正是我要解讀倪海廈老師的原因&#xff0c;看倪海廈2012年已經去世&#xff0c;到現在已經十幾年時間了&#xff0c;但是我們看現在自學中醫…

【Pandas】深入解析`pd.to_sql()`函數

【Pandas】深入解析pd.to_sql()函數 &#x1f308; 歡迎蒞臨我的個人主頁&#x1f448;這里是我深耕Python編程、機器學習和自然語言處理&#xff08;NLP&#xff09;領域&#xff0c;并樂于分享知識與經驗的小天地&#xff01;&#x1f387; &#x1f393; 博主簡介&#xff1…

2024年第六屆中青杯數學建模競賽淺析

獲取比賽資料&#xff0c;請關注gzh“小何數模”&#xff01; 本次中青杯數學建模的賽題已正式出爐&#xff0c;無論是賽題難度還是認可度&#xff0c;該比賽都是僅次于數模國賽的獨一檔&#xff0c;可以用于國賽前的練手訓練。考慮到大家解題實屬不易&#xff0c;為了幫助大家…

JavaSE:StringBuilder和StringBuffer類

1、引言 在上一篇文章中&#xff0c;我們理解了字符串的常用方法&#xff0c;細心的同學大概已經發現&#xff0c;不管是將字符串中的字符轉變為大寫或小寫&#xff0c;或是完成字符串的替換&#xff0c;又或是去除空白字符等等&#xff0c;只要涉及到字符串的修改&#xff0c…

【PB案例學習筆記】-10 進度條使用

寫在前面 這是PB案例學習筆記系列文章的第10篇&#xff0c;該系列文章適合具有一定PB基礎的讀者。 通過一個個由淺入深的編程實戰案例學習&#xff0c;提高編程技巧&#xff0c;以保證小伙伴們能應付公司的各種開發需求。 文章中設計到的源碼&#xff0c;小凡都上傳到了gite…

Java用反射reflect來實例化對象: class.getDeclaredConstructor().newInstance()

Java用反射reflect來實例化對象: class.getDeclaredConstructor().newInstance() 從java9開始, class.newInstance()已過時, 被加上Deprecated強烈反對注解 SuppressWarnings("removal")CallerSensitiveDeprecated(since"9")public T newInstance()throws …

防止自動化攻擊的最佳實踐

防止自動化攻擊的最佳實踐 在當今的網絡安全環境中&#xff0c;保護用戶賬戶免受自動化攻擊已成為每個網站和應用程序的重要任務。攻擊者可以利用多種不同類型的自動化攻擊來嘗試破壞用戶賬戶。本文將詳細介紹常見的攻擊類型及其防御機制&#xff0c;幫助您更好地保護用戶賬戶…

C# ManualResetEvent的用法

在C#中&#xff0c;ManualResetEvent類是一個同步基元&#xff0c;用于控制多個線程的執行順序。下面是一些ManualResetEvent類的常見用法&#xff1a; 等待一個事件的發生&#xff1a;可以使用ManualResetEvent的WaitOne方法來等待事件的發生。當事件被觸發時&#xff0c;Wait…

adb 連接機頂盒命令

抓機頂盒日志的方法&#xff0c;使用此命令進行抓日志&#xff0c;個別無法抓日志的盒子可以使用此方法 1、安卓9.0版本查詢命令 ps -ef |grep com.cm.webos.iptv 2、安卓4.4版本查詢命令 ps |grep com.cm.webos.iptv 3、查詢順序&#xff1a;首先進入shell下進行操作 adb she…

C++青少年簡明教程:for循環語句

C青少年簡明教程&#xff1a;for循環語句 C的for循環語句是一種迭代控制語句&#xff0c;用于重復執行一段代碼。 語法格式&#xff1a; for(表達式1&#xff1b;表達式2&#xff1b;表達式3) 循環體 for循環語句執行流程圖&#xff1a; 不太好理解&#xff0c;請看下圖&am…

VSCode配置Lua5.4安裝

參考&#xff1a;VSCode 配置 Lua 開發環境(清晰明了)_lua vscode-CSDN博客 1.下載 Lua Binaries Download (sourceforge.net) 2.配置環境變量 解壓放到某文件夾&#xff1a; 環境變量&#xff1a; 3.VSCode安裝插件 4.配置 5.測試

Python | Leetcode Python題解之第116題填充每個節點的下一個右側節點指針

題目&#xff1a; 題解&#xff1a; class Solution:def connect(self, root: Node) -> Node:if not root:return root# 從根節點開始leftmost rootwhile leftmost.left:# 遍歷這一層節點組織成的鏈表&#xff0c;為下一層的節點更新 next 指針head leftmostwhile head:#…