ArkTs Tips

路漫漫其修远兮, 吾将上下而求索

题记

江湖风云变幻,鸿蒙终将成为操作系统的半壁江山

遇到的问题

1. 鸿蒙开发中,resource的图片资源只能放到media目录下,不能再建立子目录吗?只能是app.media.xxxxx 不能是app.media.home.xxxx吗

在鸿蒙操作系统(HarmonyOS)的开发中,资源文件如图片确实通常放置在resources/rawfile或者resources/media目录下。对于您提到的具体情况,在官方文档和现有资料中,一般推荐的做法是将所有的媒体资源直接放在media文件夹内。

2.入口配置

复制代码
在配置的EntryAbility中onWindowStageCreate中配置windowState.loadContent

3. TabContent引用一个Page.ts

需要

javascript 复制代码
import { xxxx } from '../abcd/xxxx'

xxx.ts需要用export 声明一下

4.如何设置图标

ini 复制代码
module.json5 -> ability -> icon => $media.icon

5.如何设置应用名称

ini 复制代码
module.json5 -> ability -> label => $string.xxxxx

6. 为什么用interface而不用struct、class

diff 复制代码
- interface 定义对象,描述对象应该有的属性及其类型,属性为只读类型
- struct 字段和方法,配合@Component组成ArtsUI
- class 描述的的是面向对象,有了oop的性质

7.初始化一个inteface的数组

8.为何model不用struct

struct在ArkTs中是UI的描述,故model不能使用struct,model应该使用class,class为引用类型

间距

scss 复制代码
Row({ space: 10 }) 
.margin({letft: 10})
Blank().width(10)
Flex+justifyContent  .layoutWeight(1)

MVVM模式例子

typescript 复制代码
Model

@Observed
export class NewsDto {
  id: string
  images: string[]
  type: string
  title: string
  created: Number
  ....
}

ViewModel
@Observed
export class NewsVM {
  dataList: NewsDto[] = []

  reqData() {
    this.dataList = [...this.dataList,
      new NewsDto()]
  }
}

 * 采用MVVM模式编写
 * NewsVM中的dataList为列表数据,故需要用@Observed修饰
 * --- 📢:确保dataList能产生更新,dataList的更新请勿使用push、pop,而使用this.dataList = [...this.dataList, item]
 * dto model 对象使用@Observed 修饰

资源文件Media rawfile

ruby 复制代码
Media下不支持建立目录 $('app.media.xxxx')
rawfile下支持 $rawfile('imges/tab/xxxx.png')

ArkTs 继承

scala 复制代码
class NewsVM extends VM {}   关键字使用extends

Arkts 日志

c 复制代码
console.log

ArkTs 赋值

ini 复制代码
data: NewsDto[] = []
dataList?: NewsDto[] 

把dataList赋值给data
data = dataList || []
data = dataList ?? []
if(dataList){
  data = dataList
}

ArkTs 模型解析

csharp 复制代码
interface的结构可以通过json直接解析
class的结构需要手动解析或者利用第三方库

ArkTs 网络请求

csharp 复制代码
http.createHttpRequest()
一种callback回调
另外一种promise async、await

ArkTs

typescript 复制代码
string String
number Nubmer
string 和 String、number 和 Number 是两种不同的类型,分别代表 原始类型 和 包装对象。以下是它们的区别和用途:
php 复制代码
.navDestination
navDestination(builder: (name: string, param: unknown) => void): NavigationAttribute;
param如何传值,如何转化为NewsDto
scss 复制代码
Main
naviStack: NavPathStack = new NavPathStack()
Navigation(this.naviStack) {
      .onClick(()=>{
          this.naviStack.pushPathByName('NewsDetailPage', item)
     })
}
  .navDestination(this.PageMap)

@Builder
  PageMap(name: string, param: NewsDto) {
    if (name === "NewsDetailPage") {
        NewsDetailPage({ dto: param })
    }
  }

Detail

NavDestination() {}

Component 的生命周期

typescript 复制代码
struct PlanPage {
  // 1. 构造函数最先执行
  number: number = 1
  constructor() {
    super();
    console.log('1 constructor: 初始化状态' + this.number);
    this.number++
  }

  // 2. 组件即将挂载到 UI 树前调用(可选)
  aboutToAppear() {
    console.log('2 aboutToAppear: 准备渲染' + this.number);
    this.number++
  }


  build() {
    Column() {

    }.onAppear(()=>{
      // 3. 组件渲染完成后调用
      console.log('3 onAppear: UI 已显示' + this.number);
      this.number++
    })

  }
}

03-17 00:04:45.587   5198-698475   A0c0d0/JSAPP                                          I     2 aboutToAppear: 准备渲染1
03-17 00:04:45.593   5198-698475   A0c0d0/JSAPP                                          I     3 onAppear: UI 已显示2

生成长度的数组

csharp 复制代码
Array.from({ length: this.eventNum })

aspectRatio

shell 复制代码
aspectRatio 宽高比

## 后记
本文是一个记述型文档,陆续会把遇到的问题更新上来.
相关推荐
UnicornDev2 天前
【HarmonyOS 6】底部悬浮导航的迷你栏适配(API23)
华为·harmonyos·arkts·鸿蒙
笔触狂放2 天前
【项目】基于ArkTS的老年人智能应用开发(1)
harmonyos·arkts·鸿蒙
UnicornDev4 天前
【HarmonyOS 6】底部悬浮导航的沉浸光感适配(API23)
华为·harmonyos·arkts·鸿蒙·鸿蒙系统
UnicornDev9 天前
【HarmonyOS 6】设置页面 UI 设计
ui·华为·harmonyos·arkts·鸿蒙
UnicornDev12 天前
【HarmonyOS 6】基于API23的底部悬浮导航
华为·harmonyos·arkts·鸿蒙·鸿蒙系统
积水成渊,蛟龙生焉12 天前
鸿蒙手势处理篇(滑动冲突、基础手势、组合手势)
华为·arkts·鸿蒙·滑动冲突·手势冲突·基础手势·组合手势
纯爱掌门人12 天前
聊聊 HarmonyOS 上的应用内通知授权弹窗
前端·harmonyos·arkts
UnicornDev15 天前
【HarmonyOS 6】练习记录页面 UI 设计
ui·华为·harmonyos·arkts·鸿蒙
哈__16 天前
新手入门harmonyOS开发:手把手教你用ArkTS实现一个天气应用
harmonyos·arkts
积水成渊,蛟龙生焉16 天前
鸿蒙装饰器V2详解
华为·harmonyos·arkts·鸿蒙·ark