看了生命周期的图,个人理解onReady之前渲染的就是Page默认值的data值。
onReady之后则根据setData方法来reRender。
我使用Android手机测试,traceA页面到B页面的过程,发现有时会执行firstRender,有时候又不会。具体是怎么一个原因我暂时不知道。
如果在onLoad方法里执行一个异步方法,但是速度极快,理论上在firstRender之前就可以返回并赋值给data,那么我理解的是应该会和firstRender一起渲染出来。
然而事实上似乎并不是这样,而是都在onReady之后才被渲染。
我的疑问是,是否有办法将异步返回的数据(保证快于firstRender),在firstRender的时候一起渲染出来?或者是我的理解不对。
希望官方能给一个详细的解答,万分感谢
你试试,初次渲染就弄个特别大的页面呢?按理说这样会让 onReady很晚才调。
如果你要保证一起渲染,干脆 wx:if隐藏整个页面,你拿到数据了 再 setData显示出来
感谢回复,其实是这样的,我用的wepy框架,今天突然发现原来有个方法onPrefetch,可以在A页面点击的时候就触发B页面的事件,
达到使请求等在onload之前就触发,以此提升加载速度。
但是我现在尝试了以后,trace里观察到的确请求提前了,但是render并没有变快多少。
圈出来的是B页面的onload,小箭头是A页面的navigateTo开始,下方的小f是firstRender。
实际上圈出来的部分就是我想加速渲染的东西,是一个promiseAll请求,他结束了想快速渲染出来的东西应该也出来了。后的request无所谓。
但实际上我发现要在firstRender后,那个紫色的小块才rerender出来。这和我预期的不一样。很疑惑。
可能和框架的实现有关。。小程序上本身没预加载这种东西,我在想是不是他在点击的时候,如果判断接下来有跳转,就先去触发B页面的一些方法,但是实际上并没有打开B页面。
很是疑惑onReady 为初次渲染,初次渲染包含哪些?是初始化定义的默认data吗?onReady时间 - onLoad时间 这个时间差内,小程序做了哪些操作呢?
默认就是Page({data})的值,生命周期可以参考这个链接
https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html#%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F