Loading...
Loading...
用于使用 ArkTS 开发 OpenHarmony UI 时 - 查找布局、组件、状态管理、动画、导航,或处理缺少装饰器、状态不更新、渲染问题等错误
npx skill4agent add mengfei0053/skills openharmony-ui-referencedocs-OpenHarmony-v6.0-Release/zh-cn/application-dev/ui/docs/| 装饰器 | 用途 | 作用域 |
|---|---|---|
| 组件内部状态 | 仅组件内部 |
| 父 → 子 (单向) | 父到子 |
| 子 → 父回调 | 子到父 |
| 跨组件同步 | 任意后代组件 |
// 父组件
@ComponentV2
struct Parent {
@Local text: string = ''
build() {
Child({ text: this.text, onTextChange: (val) => { this.text = val } })
}
}
// 子组件
@ComponentV2
struct Child {
@Param text: string
@Event onTextChange: (val: string) => void
build() {
TextInput({ text: this.text })
.onChange((val) => this.onTextChange(val))
}
}
// 语法糖(更简单)
TextInput({ text: $$this.text })| 装饰器 | 用途 | 作用域 |
|---|---|---|
| 组件内部状态 | 仅组件内部 |
| 父 → 子 (单向) | 父到子 |
| 父 ↔ 子 (双向) | 双向绑定 |
| 跨组件同步 | 任意后代组件 |
docs/state-management/arkts-state-management-overview.md| 需求 | 组件 | 关键属性 | 文档 |
|---|---|---|---|
| 水平排列 | | space, alignItems, justifyContent | |
| 垂直排列 | | space, alignItems, justifyContent | |
| 层叠布局 | | alignContent | |
| 弹性布局 | | direction, wrap, justifyContent | |
| 相对布局 | | x/y 规则 | |
| 网格布局 | | columnsTemplate, rowsTemplate | |
| 标签页 | | barPosition, scrollable | |
| 列表 | | space, scrollBar | |
| 瀑布流 | | columnsTemplate | |
Column() {
Text('Centered')
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Center)docs/layout/arkts-layout-development-overview.md| 组件 | 用途 | 文档 |
|---|---|---|
| Text | 显示文本 | |
| TextInput | 单行输入 | |
| TextArea | 多行输入 | |
| Button | 可点击按钮 | |
| Image | 显示图片 | |
| List | 垂直滚动列表 | |
| Grid | 网格布局 | |
| Swiper | 轮播图 | |
| RichEditor | 富文本编辑器 | |
@Entry
@Component
struct NavPage {
@Provide('pageInfos') pageInfos: NavPathStack = new NavPathStack()
build() {
Navigation(this.pageInfos) {
Column() {
Button('Go to Page2')
.onClick(() => {
this.pageInfos.pushPath({ name: 'Page2' })
})
}
}
.title('Main Page')
}
}import router from '@ohos.router'
// 跳转页面
router.pushUrl({ url: 'pages/Page2' })
// 返回
router.back()docs/navigation/arkts-navigation-navigation.mddocs/navigation/arkts-routing.md| 类型 | 方法 | 使用场景 | 文档 |
|---|---|---|---|
| 自定义对话框 | | 推荐 | |
| 警告对话框 | | 简单确认 | |
| 列表选择 | | 选项选择 | |
| 弹窗 | | 绑定到组件 | |
| 提示 | | 简短反馈 | |
| 类型 | API | 使用场景 | 文档 |
|---|---|---|---|
| 属性动画 | | 平滑属性变化 | |
| 转场动画 | | 进出场动画 | |
| 组件动画 | | 组合多个动画 | |
// 属性动画
@State scale: number = 1
Image($r('app.media.icon'))
.scale({ x: this.scale, y: this.scale })
.onClick(() => {
animateTo({ duration: 300 }, () => {
this.scale = this.scale === 1 ? 1.5 : 1
})
})| 控制方式 | 语法 | 使用场景 | 文档 |
|---|---|---|---|
| 条件渲染 | | 显示/隐藏组件 | |
| 循环渲染 | | 渲染列表 | |
| 懒加载循环 | | 大数据集 | |
// ForEach (始终提供唯一键)
ForEach(this.items, (item: Item) => {
Text(item.name)
}, (item: Item) => item.id)@Styles
function cardStyle() {
.backgroundColor(Color.White)
.borderRadius(12)
.padding(16)
}
Column() {}
.cardStyle()@Extend(Text)
function redText() {
.fontSize(18)
.fontColor(Color.Red)
}
Text('Hello')
.redText()docs/state-management/arkts-style.md@ComponentV2
struct CustomComponent {
@Local count: number = 0
aboutToAppear() {
console.log('Component will appear')
}
aboutToDisappear() {
console.log('Component will disappear')
}
build() {
Text(`Count: ${this.count}`)
}
}@Builder
function TitleBar(title: string) {
Row() {
Text(title)
.fontSize(20)
.fontWeight(FontWeight.Bold)
}
.width('100%')
.padding(16)
}
// 使用
Column() {
TitleBar({ title: 'My Page' })
}docs/state-management/arkts-builder.md| 症状 | 常见原因 | 解决方法 |
|---|---|---|
| 状态变化不更新 UI | 缺少装饰器 | 添加 |
| 子组件未接收更新 | 使用单向而非双向绑定 | 添加 |
| 嵌套对象不响应 | 缺少深度观察 | 添加 |
| 不必要的重渲染 | 本地状态中有大对象 | 对不可变属性使用 |
| ForEach 渲染问题 | 缺少唯一键 | 始终提供唯一键生成器 |
| 导航不工作 | 使用 Router 而非 Navigation | 使用 |
| 对话框不显示 | 缺少 UI 上下文 | 使用 |
docs/state-management/arkts-mvvm-V2.mddocs/state-management/arkts-mvvm.mdForEach@Local@Param$$docs-OpenHarmony-v6.0-Release/zh-cn/application-dev/ui/docs/docs/overview/arkts-ui-development-overview.mddocs/state-management/arkts-state-management-overview.mddocs/layout/arkts-layout-development-overview.mddocs/components/arkts-common-components-text-display.mddocs/navigation/arkts-navigation-navigation.mddocs/animation/arkts-attribute-animation-overview.md