JS逐日一题:小顺序跳转页面有几种体式格局? 有什么差别?

20190228

小递次跳转页面有几种体式格局? 有什么差别?

在小递次中每一个页面能够看成是一个pageModel,pageModel悉数以栈的情势举行治理(最多五层)

在说跳转体式格局之前我们先来复习一下栈和堆的区分

治理体式格局差别
  • 栈是体系编译器启动治理,不须要递次员手动治理
  • 堆的开释由递次员手动治理,不实时接纳轻易发生内存泄漏
分派体式格局差别
  • 栈有两种分派体式格局:静态分派和动态分派

    • 静态分派是体系编译器完成的,比方局部变量的分派
    • 动态分派是由alloc函数举行分派的,然则栈的动态分派和堆的动态分派是差别的,它的动态分派也由体系编译器举行开释,不须要递次员手动治理
  • 堆是动态分派和接纳内存的,没有静态分派的堆
分派大小差别
  • 栈是向低地点扩大的数据结构,是一块一连的内存地区
  • 堆是向高地点扩大的数据结构,是不一连的内存地区

进入正题

小递次的路由跳转分为两种,组件跳转以及api跳转

api情势分为

  • navigateTo 保存当前页面,跳转到运用内的某个页面,运用wx.navigateBack能够返回到原页面
  • redirectTo 封闭当前页面,跳转到运用内的某个页面
  • switchTab 跳转到tabBar页面,同时封闭其他非tabBar页面
  • navigateBack 返回上一页面
  • reLanch 封闭一切页面,打开到运用内的某个页面

前面有提到栈,那末这些导航体式格局跟栈有什么关系呢,看下面

  • 初始化 新页面入栈
  • navigateTo 新页面入栈
  • redirectTo 当前页面出栈,新页面入栈
  • navigateBack 页面不停出栈,直到目的返回页,新页面入栈
  • switchTab 页面悉数出栈,只留下新的 Tab 页面
  • reLanch 页面悉数出栈,只留下新的页面

经由过程组件情势举行跳转

// navigator 组件默许的 open-type 为 navigate 
<navigator url="/page/navigate/navigate?title=navigate">跳转到新页面</navigator>

// 如须要别的情势举行跳转,能够变动open-type 属性以上api值
<navigator url="/page/navigate/navigate?title=navigate" open-type="switchTab">切换 Tab</navigator>
getCurrentPages

getCurrentPages() 函数用于猎取当前页面栈的实例(属性及要领),以数组情势按栈的递次给出,第一个元素为首页,末了一个元素为当前页面

// Page A 跳转至Page B
wx.navigateTo({ url: '/pages/B/B' })

// Page B
const pages = getCurrentPages()
const perPage = pages[pages.length - 2] // 上一个页面
perPage.setData({
    title: 'JS逐日一题'
})

总结

小递次页面由栈情势治理,最多为5层,在合理的场景运用合理的体式格局举行跳转

关于JS逐日一题

JS逐日一题能够看成是一个语音答题社区
天天应用碎片时候采纳60秒内的语音情势来完成当天的考题
群主在越日0点推送当天的参考答案

  • 注 毫不仅限于完成当天使命,更多是查漏补缺,进修群内别的同砚优异的答题思绪

点击到场答题

    原文作者:febobo
    原文地址: https://segmentfault.com/a/1190000018360255
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞