Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-uni-app-x-zh
提交
60f2e855
U
unidocs-uni-app-x-zh
项目概览
DCloud
/
unidocs-uni-app-x-zh
通知
144
Star
2
Fork
33
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
9
列表
看板
标记
里程碑
合并请求
11
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-uni-app-x-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
9
Issue
9
列表
看板
标记
里程碑
合并请求
11
合并请求
11
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
60f2e855
编写于
5月 16, 2024
作者:
W
wanganxp
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新页面描述
上级
eda0c1fd
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
4 deletion
+53
-4
docs/page.md
docs/page.md
+53
-4
未找到文件。
docs/page.md
浏览文件 @
60f2e855
...
...
@@ -115,11 +115,13 @@ uvue页面基于 vue 单文件组件规范。一个页面内,有3个根节点
### 页面onLoad生命周期@onload
页面初始化时,会触发onLoad生命周期。此时Dom还未构建渲染完毕(需要等onReady)。
页面初始化时,会触发onLoad生命周期。此时Dom还未构建渲染完毕
,ref和getElementById都拿不到Dom
(需要等onReady)。
所以onLoad页面常见的用途是开始联网取数,由于联网是异步的,在onLoad发起联网,等到获取到服务器数据后,也就可以更新到data上了。
所以onLoad页面常见的用途是:
1.
开始联网取数,由于联网是异步的,在onLoad发起联网,等到获取到服务器数据后,也就可以更新到data或响应式变量上了
2.
页面的URL支持参数传递,这个参数也是在onLoad生命周期中获取。
页面的URL支持参数传递,这个参数也是在onLoad生命周期中获取
。
手机都是多核的,uni.request或云开发联网,在子线程运行,不会干扰UI线程的入场动画,并行处理可以更快的拿到数据、渲染界面
。
通过uni.navigateTo API 或
`<navigator>`
组件,可跳转到目标页面,比如从list页面跳转到detail页面,如下:
...
...
@@ -151,6 +153,7 @@ export default {
-
但仍然可以通过上述示例代码跨平台的获取入参。
-
后续版本会统一类型为UTSJSONObject。
-
App-iOS平台的窗体动画是异步的,onLoad时可能窗体动画已经开始,此时再设置页面的pageStyle(比如设置背景色),会出现闪烁现象。
-
onLoad里不适合进行大量同步耗时运算,因为此时转场动画还没开始。尤其app-Android平台,onLoad里的代码(除了联网和加载图片)默认是在UI线程运行的,大量同步耗时计算很容易卡住页面动画不启动。除非开发者显式指定在其他线程运行。
:::
### 页面onShow生命周期@onshow
...
...
@@ -169,4 +172,50 @@ onShow和onHide是成对出现的。
![](
./static/uni-app-lifecycle-vue3.png
)
#{.zooming width=1000 margin=auto}
更多页面生命周期的详细介绍,另见
[
uni-app文档
](
https://uniapp.dcloud.net.cn/tutorial/page.html
)
\ No newline at end of file
1.
uni-app x框架,首先根据pages.json的配置,创建页面
所以pages.json中页面的style中各个设置是最早生效的,原生导航栏、页面背景色都会立即生效。
2.
根据页面template里的组件,创建dom。
这里的dom创建仅包含第一批处理的静态dom。对于通过uts更新data或响应式变量,然后通过v-for再创建的列表数据,不在第一批处理。
要注意一个页面静态dom元素过多,会影响页面加载速度。
-
在app-Android平台,可能会阻碍页面进入的转场动画。因为此时,页面转场动画还没有启动
-
在app-iOS平台,窗体动画是异步的,不会阻塞
3.
触发onLoad
此时页面还未显示,没有开始进入的转场动画,页面dom还不存在。
所以这里不能直接操作dom(可以修改data或响应式变量,因为vue框架会等待dom准备后再更新界面)。
onLoad中获取当前的activity等原生窗体对象,拿到的是老页面的activity,只能通过页面栈获取activity。
onLoad比较适合的场景是:接受上页的参数,联网取数据,更新data或响应式变量。
4.
页面onShow
onLoad之后,转场动画开始后,页面会触发onShow。
新页面开始进入的转场动画,动画默认耗时300ms。
5.
页面onReady
第2步创建dom是虚拟dom,dom创建后需要经历一段时间,UI层才能完成了页面上真实元素的创建,即触发了onReady。
onReady后,页面元素就可以自由操作了,比如ref获取节点。同时首批界面也渲染了。
注意:onReady和转场动画开始、结束之间,没有必然的先后顺序,完全取决于dom的数量和复杂度。
如果元素排版和渲染够快,转场动画刚开始就渲染好了;
大多情况下,转场动画走几格就看到了首批渲染内容;
如果元素排版和渲染过慢,转场动画结束都没有内容,就会造成白屏。
联网进程从onLoad起就在异步获取数据更新data或响应式变量,如果服务器速度够快,第二批数据也可能在转场动画结束前渲染。
6.
转场动画结束
再次强调,5和6的先后顺序不一定,取决于首批dom渲染的速度。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录