小程序页面wx.navigateTo跳转携带参数,wx.navigateBack携带参数,wx.switchTab携带参数,小程序跳转小程序带参

1.(wx.navigateTo)在小程序页面跳转中,页面之间跳转会有携带参数的须要(例如:从列表页跳转到详情,详情须要经过不一样的id来请求不一样的详情页数据):javascript

(1)跳转有两种:html

        ①标签方式:<navigator url="/pages/shopdetail/shopdetail?id={{item.id}}&name='xiaoming'&age=20" open-type="navigate"></navigator>java

        ②js事件的方式:           小程序

           wx.navigateTo({api

             url: "/pages/shopdetail/shopdetail?id="+ifor.id+"&name='xiaoming'&age=20"缓存

          });app

(2)路径地址中携带参数,第一个参数用问号(?)隔开,第二个参数以后用(&)隔开,参数的key和value之间用等号(=)隔开,其实和HTML的a连接同样;函数

(3)从a页面跳转到b页面,携带的参数在b页面的onload生命周期时获取url

          onLoad: function(options) {
               var id = options.id;
               var name = options.name;
               var age = options.age;
         },.net

   2.从某些页面回到首页,也有存在从该页面带参数,携带的该参数能改版首页的某些状态,由于从首页过来是经过  navigateTo过来的,因此从该页面再会带首页,不能用  navigateTo(在小程序开始时只有五级页面嵌套,虽然如今好像没有这个限制了,但若是循环往复上百次上千次,那navigateTo结果就不敢想象了,就嵌套了几千次了);这时能够考虑销毁当前页面之前的全部页面,跳到首页

     3.若是不用     wx.reLaunch  而 想用   wx.navigateTo  其实也有方法

    (1)存储到app对象上的方式,在app.js中定义一个全局变量mydata

var app = getApp()
app.globalData.mydata = {name:'xiaoming', age:30};  //存储数据到app对象的全局变量上
wx.navigateBack();  //返回上一个页面

  (2)存储到数据缓存的方式

wx.setStorage({
  key: "mydata",
  data: {name:'xiaoming', age:30},
  success: function () {
    wx.navigateBack();   //返回上一个页面
  }
})

4.wx.navigateBack,其实你从那个页面跳走再用wx.navigateBack返回的方式走到该页面,走的时候是啥状态如今就是啥状态,若是涉及状态改变的部分必须写在onshow生命周期函数中,onload只会初次执行,等wx.navigateBack不会再次执行,但onshow会执行。

5.wx.switchTab是不能携带参数的,能够经过全局变量或者缓存来实现参数携带;

(1)全局变量:

app.globalData.otherInfo.detailId = that.data.detailInfor.id;

(2)本地缓存

wx.setStorageSync('detailId', that.data.detailInfor.id)

6.对于有特殊字符的地址参数,咱们还须要进行转义

(1)代码(encodeURIComponent:编译,decodeURIComponent:还原。成对使用

// 原始url
var url ='http://img-ads.csdn.net/2018/201812101159198567.png';
// 转码后的
var newUrl = encodeURIComponent(url);
// 将转码的再次还原
var oldUrl = decodeURIComponent(newUrl);
console.log('url', url);
console.log('newUrl', newUrl);
console.log('oldUrl', oldUrl);

(2)效果

8.小程序跳转小程序携带参数:点击传送门去官网

8.1有两种方式:

(1)经过path 的方式:

(2)经过extraData的方式:

8.2 在使用时有一些区别:

(1)path的方式能够经过query的方式能够拿到;经过extraData的方式需在 “options.referrerInfo.extraData.参数名” 的方式来获取,例以下图;

(2)query的方式:在 envVersion 为 develop 模式时,第一次跳转小程序没法获取 参数,在第二次以及第二次之后才能获取参数值。可是若是 envVersion 为 release 的时候是正常的。出现这种现象的缘由多是腾讯的bug吧,至少截止20200630是这样的,但愿之后能修复吧。