小程序頁面之間數據傳遞的4種方法總結
前言
近期再使用小程序開發(fā)的時候遇到小程序頁面和頁面之間的數據傳遞問題??偨Y一下大致有以下幾種方式實現頁面數據傳遞。
最常見的就是路由傳參,使用場景主要是頁面匯總的少量數據的傳遞。以下都以Taro+vue示例,原生、react或者uniapp同理,替換以下關鍵字Taro即可
注意:以下的幾種方式會把參數string化,例如: true -> ‘true’; 1 -> ‘1’
1. 少量數據傳遞
例如: 從A頁面->B頁面
使用頁面跳轉navigateBack
保留當前頁面,跳轉到應用內的某個頁面。但是不能跳到 tabbar 頁面。
參數: ?
隔開,=
相連
A頁面
wx.navigateTo({ url: 'test?id=1' })
B頁面
import { useDidShow, useRouter } from "@tarojs/taro" // 在 show生命周期中獲取 useDidShow(() => { const router: any = useRouter(); const data = router.params ?? {}; // 取router里面的params });
這種適用于數據量少的情況,也不建議復雜或者數據量打的時候使用該方法(個人建議而已-.-)
2. 數據量大或者相對復雜的數據傳遞
從A頁面->B頁面,適用于頁面跳轉數據量較多或者復雜的數據時
A頁面
Taro.navigateTo({ url: '/test', success: function(res) { // 通過 eventChannel 向被打開頁面?zhèn)魉蛿祿? res.eventChannel.emit('test-data', { data: 'test' }) // res.eventChannel.emit 第二個參數是要傳遞的數據 **第二個參數只能是key-value形式的對象** } })
B頁面,在show生命周期中獲取
useDidShow(() => { const current = pages[pages.length - 1]; const event = current.getOpenerEventChannel(); event.on('test-data', params => { console.log(params); // { data: 'test' } }); });
3. 返回上一個頁面的數據傳遞
B頁面->A頁面,從B頁面返回A頁面時需要傳遞一些數據時。返回上一個頁面navigateBack
示例:
B頁面返回上一個頁面
// 獲取全部頁面 let pages= getCurrentPages() // 獲取前一個頁面的序號 let prevPage = pages[pages.length - 1] // 給前一個頁面設置數據 prevPage.setData({...}) wx.navigateBack({ delta: 1 // 返回一個頁面 // 返回的頁面數,如果 delta 大于現有頁面數,則返回到首頁 })
在A頁面
useDidShow(async () => { const data = Taro.getCurrentInstance().page.data ; // 頁面返回的參數 })
4. 使用本地緩存
使用setStorageSync
和getStorageSync
(建議在以上三種都不滿足使用場景時使用該方法)
// set Taro.setStorageSync('test', data); // get Taro.getStorageSync('test')
目前接觸就這四種,應該還有其他方式,只是常用這四種。歡迎補充和指正。
總結
到此這篇關于小程序頁面之間數據傳遞的4種方法的文章就介紹到這了,更多相關小程序頁面間數據傳遞內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
List the UTC Time on a Computer
List the UTC Time on a Computer...2007-06-06jQuery animate()實現背景色漸變效果的處理方法【使用jQuery.color.js插件】
這篇文章主要介紹了jQuery animate()實現背景色漸變效果的處理方法,結合實例形式分析了jQuery顏色插件jquery.color.js實現背景色漸變的簡單操作技巧,需要的朋友可以參考下2017-03-03javascript簡單實現跟隨滾動條漂浮的返回頂部按鈕效果
這篇文章主要介紹了javascript簡單實現跟隨滾動條漂浮的返回頂部按鈕效果,涉及javascript基于onscroll事件動態(tài)改變頁面元素樣式的相關技巧,需要的朋友可以參考下2016-08-08