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点推送当天的参考答案
- 注 毫不仅限于完成当天使命,更多是查漏补缺,进修群内别的同砚优异的答题思绪