原因:wx.navigateTo 路由跳轉傳參url?id=2 ; 多個參數通過&鏈接進行參數拼接 ; 但是url是有長度限制機制存在的 , 參數過多 , 拼接后導致url的整體長度過長 , 傳遞和接收時會導致參數不完整 , 異常情況~~
解決方法1
eventChannel 新增頁面間通信接口,用於監聽被打開頁面發送到當前頁面的數據 ; 低版本要做兼容處理
/** * 例子中 eventChannel 為新增 路由events 事件 res 中可直接獲取到實例 調用 emit 觸發事件, 類似vue中的組件間通信 on emit 方法; 之后我們在接收頁面onLoad onShow 中獲取監聽 */ uni.navigateTo({ //跳轉頁面 url: './afterSale', events: {},// 為指定事件添加一個監聽器,獲取被打開頁面傳送到當前頁面的數據 success: function (res) { res.eventChannel.emit('getData', item) //觸發事件 } }) /** * onLoad onShow 中通過 this.getOpenerEventChannel() 獲取 eventChannel 實例 同時使用 on 方法進行監聽接收傳參數據 */ onLoad: function(options) { //接收頁面 const eventChannel = this.getOpenerEventChannel(); eventChannel.on("getData",data => { console.log(data) }); } /** * 例子中 eventChannel 的只是部分能力的使用 , eventChannel 更多的功能可參考文檔結合實際場景擴展使用 */
解決方法 2
用法不再贅述 , 用到的方法容易理解 , 用法也簡單
uni.navigateTo({ //跳轉頁面 url: './afterSale?id=' + id + '&orderData=' + encodeURIComponent(JSON.stringify(item)) }) /** * */ onLoad: function(options) { //接收頁面 const order = JSON.parse(decodeURIComponent(options.orderData)); console.log(order) }
其他方法 : 可以通過全局變量 globalData , 或者本地緩存進行解決 , 不再贅述 , 實現方法簡單