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([1,3,4,5,6,7,87,8,8,9,23,34],(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([1,3,4,5,6,7,87,8,8,9,23,34],(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企服之家,中国第一个企服评测及商务社交产业平台。 |