介绍
@Entry是一个核心装饰器,用于标识 应用的入口组件,即应用启动时加载的第一个视图组件。
通常与 @Component 装饰器配合使用,修饰一个 struct 组件,表明该组件是应用的起点。
作用
- 应用启动入口:
@Entry装饰器将指定的组件标记为应用的启动页面。鸿蒙系统会自动将这个组件作为应用的第一个页面进行展示。 - 简化启动流程:通过
@Entry,开发者无需手动配置复杂的启动逻辑,系统会自动完成从入口组件开始的加载和渲染过程。
应用场景
- 主界面定义:
@Entry组件通常是应用的主界面,包含导航栏、核心功能入口等。 - 初始化逻辑:可以在
@Entry组件中完成初始化工作,如加载数据、设置全局配置等。 - 模块化开发:结合
@Component定义的复用组件,构建模块化的应用结构。
与 @Component 的关系
协同工作:
@Entry和@Component通常一起使用,@Entry标识入口组件,@Component定义组件的结构和行为。组件复用:通过
@Component定义的组件可以在其他组件中被引用和嵌套,而@Entry组件是应用的起点。
语法
@Entry通常与@Component装饰器一起使用,标记一个结构体struct 为应用的入口组件。
例子
@Entry
@Component
struct MainPage {
@State message: string = 'Hello, HarmonyOS!';
build() {
Column() {
Text(this.message).fontSize(24)
Button('Click Me').onClick(() => {
this.message = 'Button Clicked!';
})
}
}
}
说明:MainPage组件被@Entry和@Component装饰器标记为应用的入口组件。组件包含一个文本(Text)和一个按钮(Button),点击按钮会更新文本内容。
注意
唯一性:单个
UIAbility中,必须且只能有一个@Entry装饰的组件,作为应用的唯一入口。根容器要求:
@Entry装饰的组件,在build()函数中,需要包含 一个根容器 (如Column、Row等),作为布局的起点。被
@Entry修饰的组件所在的页面,要在main_pages.json配置文件中配置,确保应用启动时能正确找到并加载该页面。