harmonyOS职业认证HCIA 学习ing之n多问题

文章列举了在HCIA学习过程中碰到的各种技术问题,包括本地模拟器的CPU消耗、低代码开发的背景图片显示、代码同步失败、预览器错误、TS+Vue的语法问题、数据类型混淆、参数获取问题以及电脑性能影响的进度条显示等,并提供了相应的解决办法。
摘要由CSDN通过智能技术生成

注意事项:

1、本地模拟器虽然使用方便,但对电脑运行内存要求比较高,电脑配置不高的话,建议使用远程模拟器(来自使用本地模拟器快给我cpu干烧了的初学者的counsel)

问题及解决方法

1、在hcia学习中,第一章第四个场景中,出现低代码开发模式下,背景图片在previewer模式下出不来

可以在远程模拟器下,往上拉动label图标,出现服务卡片

2、在hcia学习中,第二章“进京赶考实验”,导入华为提供的框架代码后,出现SYNC failed

从API版本9开始,包管理器已经从npm切换到ohpm。因此,需要在同步前进行配置迁移

这里直接去action中,让dev工具自动配置

问题解决

这是因为当前用的是华为官方提供的代码框架,“进京赶考”项目用的是API8和npm镜像包,而我们现在用的是API9+onpm包,镜像地址都不一样,所以可以点击让它自动进行迁移

3、预览器不可用

在“进京赶考”项目的第一个页面上,写了index.ets文件,预览的时候,出现

同时在run后的log里出现

这是因为给的代码框架中声明了一个我们暂时还没有创建的ability

只需要把这段代码注释掉,还有一个导入声明忽略掉

预览器即可正常启动!如下

4、中间出现一个错误,Button爆红,“This expression is not callable”

上网搜了一下,说是ts+vue中出现说是结尾要加“;”,和这个没有关系,还有说要去声明什么东西的,最后发现,是我在写的过程中,不小心自动导入了一个button,把他们删掉就可以了

5、在进行页面跳转并进行数据传递的时候,发现数据传递不过去,代码写的也没有问题,最后找马老师救命,终于发现了我的问题

写习惯了Java代码,总是喜欢把“string”类型写成“String”,在ArkTs语言中,string是字符串类型,而String表示的是对象。(自己是累死都找不到问题在哪。。。。。)

6、参数传递过来之后,用$获取当前定义的数据,发现获取不到,出现以下界面

问题解决,在js语法中,反引号“ ` `”可以用${}可以给函数传递参数

所以把定义获取文本的单引号换成反引号就可以了

(ps:反引号的打法:英文状态下的~键)

7、巨坑!!!设置完定时器之后,进度条不动。。。。。。。

定时器设置完之后,发现this.proValue是可以进行自加赋值的,但是这个图标进度条一动不动!(一动不动是王八!)

代码没有任何问题,纯粹是。。。。。。电脑太卡!!! 我真的是服了,和马老师讨论了半天,研究代码,研究log,最后发现是电脑的问题。。。。

8、小问题+1,在去获取AbilityContext接口时,导入报错,用的API9,语法过时,忽略即可。

未解决:

在学习HCIA职业认证课程中,发现了一个问题,目前暂未解决,,,,,,

主要操作是想进行“父-------->子”之间的单向传输,“子<------->孙”之间的双向传输

代码如下:

// 用preview装饰的自定义组件可以在预览器上预览
// 复杂的单双向传递,父---->子<----->孙
@Preview
@Entry
@Component
struct EasyMixBind {
  // 表示组件中的状态变量,这个状态变量会引起UI变更
  // @State ffValue2:number= 0 //传递
   ffValue2:number= 0 //传递
  @State ffValue: number =  this.ffValue2   //绑定

  build() {
    Column() {
      Text('复杂单+双向绑定').fontSize(20).fontWeight(700).ttStyle()
      Text('父组件值:' + this.ffValue).ttStyle()
      Row() {
        Button('+', { type: ButtonType.Normal }).backgroundColor(0xff1493).bb()
          .onClick(() => {
            this.ffValue++//父组件展示
            this.ffValue2++//传给子组件
            // console.log(this.ffValue2 + '')
          })
        Button('-', { type: ButtonType.Normal }).backgroundColor(0xff1493).bb()
          .onClick(() => {
            this.ffValue--
            this.ffValue2--
          })
      }
      //   应用子组件
      // ssComponent({ fromFV:this.ffValue2}) //父传子
      ssComponent({ ssValue:this.ffValue2}) //父传子
      //   实现页面跳转
      Navigator({ target: "pages/TwoDirectionBind", type: NavigationType.Push }) {
        //   按钮
        Button('第三', { type: ButtonType.Capsule }).backgroundColor(0x7ffd4).bb()
          .fontColor(0x696969)
          .margin({ top: 20 })
      }
    }
    .backgroundColor(0x1e90ff)
    .height('100%')
    .width('100%')
  }
}
// 定义子组件
@Component
struct ssComponent {
  // 在子组件中用@Prop组件装饰传递变量
  //   @Prop fromFV:number
  //  @State ssValue: number= this.fromFV
   @State ssValue: number= 0

  build() {
    Column() {

      Text('子组件值:' + this.ssValue).ttStyle()
      .onClick(()=>{
        console.log( 'sscom' + this.ssValue)
      })
      Row() {
        Button('+', { type: ButtonType.Normal }).backgroundColor(0xff6984).bb()
          .onClick(() => {
            this.ssValue++
            // this.fromFV++
          })
        Button('-', { type: ButtonType.Normal }).backgroundColor(0xff6984).bb()
          .onClick(() => {
            this.ssValue--
            // this.fromFV--
          })
      }
      // .justifyContent(FlexAlign.SpaceBetween)
      //   调用孙组件
      grandssComponent({ grandssValue: $ssValue })
    }
    .backgroundColor(0x00BFF)
    .width('80%')
    .height("60%")
    .margin({ top: 30 })
  }
}
// 定义孙组件
@Component
struct grandssComponent {
  @Link grandssValue: number

  build() {
    Column() {
      Text('孙组件的值:' + this.grandssValue).ttStyle().margin({ top: 30, bottom: 30 })
      Row() {
        Button('+', { type: ButtonType.Normal }).backgroundColor(0xffc0cb).bb()
          .onClick(() => {
            this.grandssValue++
          })
        Button('-', { type: ButtonType.Normal }).backgroundColor(0xffc0cb).bb()
          .onClick(() => {
            this.grandssValue--
          })
      }

    }.backgroundColor(0x87cefa)
    .width('80%')
    .height('45%')
    .margin({ top: 30 })
  }
}

//自定义组件,
// 可组合、可重用、具有生命周期、数据驱动更新
// 数据驱动更新:由状态变量的数据驱动,实现UI的自动更新,
// 也就是说,当我当前的自定义组件内容发生改变时,它会返回通知调用它的build重新构建
/*
@Component
struct myComponent{
  build(){
    Column(){
      Text('自定义组件1111')
    }
  }
}*/
@Extend(Text) function ttStyle() {
  .fontColor(0xffffff)
  .margin({ top: 5, bottom: 10 })
  .fontSize(30)
  .fontWeight(1000)
}

@Extend(Button) function bb() {
  .borderRadius(8)
  .width(90)
  .margin({
    // left:40,
    right: 30
  })

}

如代码所示,我定义了一个普通变量,让它和子组件进行传递,再让子组件和孙组件用@Link传递,但是出不来这个效果,目前效果如下图所示:

没有前端基础的初学者,如有不对,欢迎指出~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值