WeApp: Important Notes

 20th August 2020 at 2:19pm

一些可能不够直观、需要特别关心的点。

小程序运行机制

JS 逻辑代码在一个线程中;每个页面在单独的渲染线程中。因此在页面 1 设置的 setTimeout,跳转到页面 2 也存在,如果不用了需要清除掉。

App 及 Page 的差异

  • App 管理全局数据和整个小程序的生命周期
  • Page 管理当前页面数据和当前页面的生命周期

对于它们的生命周期和用户动作触发的事件,需要认真看看事件会在什么时候被触发:

Page 中 setData 的 key 可以表示复杂结构

Page({
  data: {
    a: 1, b: 2, c: 3,
    d: [1, {text: 'Hello'}, 3, 4]
  }
  onLoad: function(){
    // 可以用 'd[1].text' 直接设置到 `d` 里面的属性
    this.setData({'d[1].text' : 'World'})
  }
})

TabBar 页面及普通页面

微信小程序在设计上,认为 TabBar 的页面是顶级页面,从 API 的设计上可以看到:

wx.navigateTowx.redirectTo 只能打开非 TabBar 页面,wx.switchTab 只能打开 Tabbar 页面

因此 wx.navigateTowx.redirectTo 只适用于某个 tab 下的页面跳转。