HarmonyOS开辟的项目运行在ArkUI-X详解
HarmonyOS开辟的项目如何运行在ArkUI-X,ArkUI-X和HarmonyOS Next 都是利用 API Version 10+的OS版本,对语法要求更严格。重要分为以下两步来实现。更多HarmonyOS开辟详解见:HarmonyOS HarmonyOS Next系列教程下载地址-IT营大地老师 一、同步代码 1、复制HarmonyOS entry\src\main\ets\pages 里面的全部文件到 ArkUI-X项目标 entry\src\main\ets\pages 里面 2、复制HarmonyOS entry\src\main\resources 里面的全部文件到ArkUI-X项目标 entry\src\main\resources 目录里面,这里面包罗了资源文件和路由设置文件 3、修改ArkUI-X entry/src/main/module.json5 ,假如HarmonyOS 项目中设置了网络请求或者申请 权限的代码还需在 module.json5 中重新设置 二、让HarmonyOS代码能在ArkUI-X中运行 ArkUI-X和HarmonyOS Next 都是利用 API Version 10+的OS版本,对语法要求更严格。 假如以前写代码语法不规范还需要举行微调 1、循环遍历数据必须指定范例 下面代码在HarmonyOS中可以运行,但是在ArkUI-X中会提示item错误 List({space:10}){ForEach(,(item)=>{
ListItem(){
Text(`${item}`)
.fontSize(34)
.width('100%')
.height(60)
.borderRadius(10)
.textAlign(TextAlign.Center)
.backgroundColor('#eee')
}
})
}
.padding(10)
.height('100%') 解决方法 循环遍历的时间指定数据范例 List({space:10}){
ForEach(,(item:number)=>{
ListItem(){
Text(`${item}`)
.fontSize(34)
.width('100%')
.height(60)
.borderRadius(10)
.textAlign(TextAlign.Center)
.backgroundColor('#eee')
}
})
}
.padding(10)
.height('100%') 提示: 对应的 key 也需要设置范例 @Entry
@Component
struct Grid_1_View_Page {
arr: string[] =
[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`,'12','13','14','15']
build() {
Column() {
Grid(){
ForEach(this.arr,(item:string)=>{
GridItem(){
Text(item)
.fontSize(26)
.fontColor(Color.White)
.backgroundColor("#007DFF")
.width('100%')
.height('160')
.textAlign(TextAlign.Center)
}
},(item:string)=>item)
}.columnsTemplate('1fr 1fr 1fr')
.columnsGap(10)
.rowsGap(10)
.padding(10)
}
.width('100%')
.height('100%')
}
} 2 、界说相应式数据需要指定初值 下面代码在 HarmonyOS 中可以运行,但是在 ArkUI-X 中会提示 Property 'cId' has no initializer and is not definitely assigned in the constructor. Property 'pId' has no initializer and is not definitely assigned in the constructor. private pId: number
private cId: number
aboutToAppear(){
let params:object = router.getParams()
console.log(params["pId"])
console.log(params["cId"])
this.pId=params["pId"];
this.cId=params["cId"];
} 解决方法 : 界说相应式数据需要指定初值 private pId: number=0
private cId: number=0
aboutToAppear(){
let params:object = router.getParams()
console.log(params["pId"])
console.log(params["cId"])
this.pId=params["pId"];
this.cId=params["cId"];
} 3 、界说变量需要指定范例 下面代码在 HarmonyOS 中可以运行,但是在 ArkUI-X 中会提示 Indexed access is not supported for fields private pId: number=0
private cId: number=0
aboutToAppear(){
let params = router.getParams()
console.log(params["pId"])
console.log(params["cId"])
this.pId=params["pId"];
this.cId=params["cId"];
} 解决方法 : 界说变量需要指定范例 private pId: number=0
private cId: number=0
aboutToAppear(){
let params:object = router.getParams()
console.log(params["pId"])
console.log(params["cId"])
this.pId=params["pId"];
this.cId=params["cId"];
} 4 、 parseInt() 报错 利用 Number() 方法替换 Usage of standard library is restricted (arkts-limited-stdlib) <ArkTSCheck import router from '@ohos.router'
@Component
export struct AppBar {
//在build方法执行之前执行
aboutToAppear(){
console.log(router.getLength())
}
//build方法执行完毕后才执行
onPageShow(){
}
title:string="首页"
build(){
Row(){
if(Number(router.getLength())>1) {
Row() {
Image($r("app.media.back")).height(22).padding({ left: 6 })
}.width(60)
.height('100%')
.onClick(() => {
router.back()
})
}
Row(){
Text(this.title)
.size({ width: '100%', height: "50vp" })
.fontColor("#ffffff")
.textAlign(TextAlign.Center)
.fontSize("18fp")
}.layoutWeight(1)
if(Number(router.getLength())>1) {
Row() {
}.width(60)
.height('100%')
}
}
.height(50)
.width('100%')
.backgroundColor("#d81e06")
}
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]