自学鸿蒙HarmonyOS的ArkTS语言<二>自定义组件和页面生命周期

【官方文档传送门】

一、自定义组件生命周期

aboutToAppear() — 创建自定义组件 之后 , 在 build() 声明 UI 函数 之前执行 ; 常 用于 初始化 将要在 UI 中展示的数据 , 或 申请 系统资源 , 在后续执行的 build 函数中 , 使用 初始化的数据 或 申请的系统资源 ;

aboutToDisappear() – 在 build() 声明 UI 函数 之后 , 在 自定义组件销毁 之前 调用 ;通常 用于 销毁 在 UI 中展示的数据 , 或 释放不再申请的 系统资源 ;

注意:不允许在aboutToDisappear函数中改变状态变量, 特别是@Link变量的修改可能会导致应用程序行为不稳定。

二、页面生命周期

只有@Entry装饰的自定义组件才可以使页面级别的生命周期
onPageShow() 函数 — 页面每次显示时触发一次 , 包括路由进入,应用进入前台 ;

onBackPress() 函数 — 用户点击 回退键 ; 注意 : 此时不会 回调 onPageHide 函数 ;

onPageHide() 函数 — 页面每次隐藏时触发一次,包括点击 Hone 键 , 页面进入后台 , 页面隐藏;注意 : 此时不会 回调 onBackPress 函数 ;

三、页面和组件生命周期执行顺序

在这里插入图片描述
A、页面渲染:页面aboutToAppear -> 自定义组件aboutToAppear ->页面onPageShow
在这里插入图片描述

B、页面1通过路由进入页面2
在这里插入图片描述

C、页面2通过路由返回页面1
在这里插入图片描述
D、补充

  • 文档上完整的应用冷启动初始化流程:(MyComponent 是被entry修饰的, chid是未修饰的)
    MyComponent aboutToAppear --> MyComponent build --> Child aboutToAppear --> Child build --> Child build执行完毕 --> MyComponent build执行完毕 --> Index onPageShow

  • 如果调用的是router.replaceUrl,则当前Index页面被销毁,执行的生命周期流程将变为:Index onPageHide --> MyComponent aboutToDisappear --> Child aboutToDisappear。上文已经提到,组件的销毁是从组件树上直接摘下子树,所以先调用父组件的aboutToDisappear,再调用子组件的aboutToDisappear,然后执行初始化新页面的生命周期流程。

好的,我会尽力回答您的问题。 首先,需要在Python中安装sqlite3和flask库,可以通过以下命令进行安装: ``` pip install sqlite3 pip install flask ``` 接下来,可以使用以下代码来连接test.db数据库,并查询学生数据表中的所有数据: ```python import sqlite3 # 连接数据库 conn = sqlite3.connect('test.db') # 获取游标 cursor = conn.cursor() # 查询学生数据表中的所有数据 cursor.execute('SELECT * FROM student') results = cursor.fetchall() # 关闭游标和连接 cursor.close() conn.close() ``` 接下来,可以使用flask库创建一个Web应用程序,并将查询到的学生数据以表格的形式展示出来。可以参考以下代码: ```python from flask import Flask, render_template import sqlite3 app = Flask(__name__) @app.route('/') def show_students(): # 连接数据库 conn = sqlite3.connect('test.db') # 获取游标 cursor = conn.cursor() # 查询学生数据表中的所有数据 cursor.execute('SELECT * FROM student') results = cursor.fetchall() # 关闭游标和连接 cursor.close() conn.close() # 将查询结果传递给HTML模板,并进行渲染 return render_template('students.html', students=results) if __name__ == '__main__': app.run() ``` 在上面的代码中,我们使用了Flask的`render_template`函数将查询到的学生数据传递给了一个名为`students.html`的HTML模板。下面是`students.html`模板的示例代码: ```html <!DOCTYPE html> <html> <head> <title>学生信息</title> <style> table { margin: 20px auto; border-collapse: collapse; width: 80%; } th, td { padding: 10px; border: 1px solid #ddd; text-align: center; } th { background-color: #f2f2f2; color: #333; font-weight: bold; } tr:nth-child(even) { background-color: #f2f2f2; } tr:hover { background-color: #ddd; } </style> </head> <body> <h1>学生信息</h1> <table> <tr> <th>学号</th> <th>姓名</th> <th>性别</th> <th>年龄</th> <th>班级</th> </tr> {% for student in students %} <tr> <td>{{ student[0] }}</td> <td>{{ student[1] }}</td> <td>{{ student[2] }}</td> <td>{{ student[3] }}</td> <td>{{ student[4] }}</td> </tr> {% endfor %} </table> </body> </html> ``` 在上面的代码中,我们使用了HTML的`<table>`标记来创建了一个表格,并使用CSS样式来设置了表格的样式。在Flask中,我们可以使用`{{ }}`来插入Python代码,并使用`{% %}`来插入控制语句,例如`{% for %}`循环。在上面的代码中,我们使用了`{% for %}`循环将查询到的学生数据逐行渲染到表格中。 最后,运行Python代码,并在浏览器中访问`http://localhost:5000/`即可查看学生数据信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Misha韩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值