HarmonyOS 鸿蒙Next关于前后端交互的class问题

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next关于前后端交互的class问题
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

关于HarmonyOS 鸿蒙Next关于前后端交互的class问题的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。

11 回复

后端返回的数据都是在data里面,但是不同接口返回的数据是不一样的。虽然接收的时候可以用object,但是不能用字段名拿到字段值,除非用指定的class类进行接收。

这样一来,接口的数量一多就得创建很多的class来接收数据,有没有别的办法

HarmonyOS的分布式文件系统让我在多设备间共享文件变得更加方便。

利用Object()['字段值'] 可以用字段名拿到字段值,但是不建议这样做,数据处理不好容易闪退。

参考:https://developer.huawei.com/consumer/cn/blog/topic/03155225705890022

显示字段不支持索引访问 Indexed access is not supported for fields (arkts-no-props-by-index) <ArkTSCheck>

显示字段是指什么?下面的例子我这边都可以的。 class Ohter { dateofBirth: string = “” }

class User { name: string = “” ohter?: Ohter }

@Entry @Component struct Page87 { userJson: string = { "name":"张三","ohter":{"dateofBirth":"2000-01-01"}}

build() { Column() { Button(‘测试1’).onClick(() => { console.info(JSON.parse(this.userJson)[‘ohter’][‘dateofBirth’]) }) Button(‘测试2’).onClick(() => { let mUser: User = JSON.parse(this.userJson) as User console.info(Object(mUser)[‘ohter’][‘dateofBirth’]) }) } .height(‘100%’) .width(‘100%’) } }

是显示“字段不支持索引访问”, 就是这段英文Indexed access is not supported for fields (arkts-no-props-by-index)。 我是用Object接收

使用反射,Reflect

cke_125.png

import {
  efAxiosParams,
  efClientApi,
} from '[@yunkss](/user/yunkss)/eftool'

@Entry @Component struct Page87 { @State context:string = “” build() { Column({space:10}) { Button(‘测试1’).onClick(() => { this.requestTest() }) Text(测试响应内容:${<span class="hljs-keyword"><span class="hljs-keyword">this</span></span>.context}) } .height(‘100%’) .width(‘100%’) } async requestTest(){ efAxiosParams.isConvertDTO = false //不需要响应数据转换为OutDTO则将efAxiosParams.isConvertDTO设置为false const get = await efClientApi.get<string>(https://api.oioweb.cn/api/SoulWords); console.info(get:${<span class="hljs-built_in"><span class="hljs-built_in">JSON</span></span>.stringify(get)}) console.info(content:${get[<span class="hljs-string"><span class="hljs-string">'result'</span></span>][<span class="hljs-string"><span class="hljs-string">'content'</span></span>]}) this.context = get[‘result’][‘content’] } } <button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

懒得写就ESObject呗,不过按鸿蒙要求是全都得写的,最好也是都写,设计接口的时候就要考虑周全

用一个文件把接口用到的响应数据都放在在一起,不一定用class,可以用interface定义。

cke_4599.png

cke_4925.png

我的意思就是像你图中的userinfo这种类型要定义太多了,不同的接口需要不同的定义,不能像vue一样直接放到data中用

回到顶部