HarmonyOS 鸿蒙Next UI中如何使用异步获取到的数据?

HarmonyOS 鸿蒙Next UI中如何使用异步获取到的数据? 大佬们,我创建了一个自定义类的数组,数组的值是异步方法得到的,我在UI组件中加载不出得到的值,但我确定值已经得到了。

以下是是我获取的数据:

以下是是我使用数据:

这两个组件都没法显示出我获取到的值,只能显示创建数组时默认的值。

获取数据的方法是:

通过console.log能看到确实是返回了数据,并且能够确定在一段时间后能得到值


更多关于HarmonyOS 鸿蒙Next UI中如何使用异步获取到的数据?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

是不是应该 把 类 Course 加 @Observed 修饰,并在其实例的地方加 @ObjectLink 修饰?

更多关于HarmonyOS 鸿蒙Next UI中如何使用异步获取到的数据?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


@ObjectLink好像没法写在@Entry装饰的组件里,请问这种情况应该怎么解决呢?

你这个就是典型的需要@Observed@objectlink组合的情况。因为@state只能监听数组长度变化监听不到数组内部元素的变化

请问如果在我创造类的实例的地方有@entry,用不了@objectlink怎么办呢?foreach循环渲染在@Entry装饰的容器里,循环渲染用到的自定义组件可以用@objectlink,这种情况下该怎么做呢?

@entry有且只有可能是根节点,你不可能会在根节点有这个需求。因为一旦你在根节点使用这个,说明你还是可以把它包到某一个子组件里,哪怕那个子组件有且只有一个Row在里面。

@state这几个状态管理他只为了一件事,视图更新,如果你不需要视图更新,也不需要这些状态管理装饰,直接利用引用对象就完事了。

似乎我和前面的那个问题查不多,你可以把你CourseData.getCourse列出来看看。

姓名:张三
职位:软件工程师
邮箱:zhangsan@example.com
电话:123-456-7890

简介:
具有五年软件开发经验,熟悉Java、Python和C++。擅长解决复杂问题和团队协作。

在HarmonyOS鸿蒙Next UI中,使用异步获取到的数据可以通过[@State](/user/State)@Link@Provide等装饰器来实现数据的动态更新和绑定。具体步骤如下:

  1. 定义状态变量:使用[@State](/user/State)装饰器定义一个状态变量,该变量将用于存储异步获取到的数据。例如:

    [@State](/user/State) data: string = '';
    
  2. 异步数据获取:在组件的生命周期方法(如aboutToAppear)或自定义方法中,使用async/awaitPromise来异步获取数据。例如:

    async fetchData() {
        const response = await fetch('https://api.example.com/data');
        const result = await response.json();
        this.data = result;
    }
    
  3. 绑定数据到UI:在UI组件中,使用{{}}语法将状态变量绑定到UI元素上。例如:

    Text(this.data)
        .fontSize(20)
        .margin(10)
    
  4. 触发数据更新:在适当的时机(如组件加载完成后)调用异步数据获取方法。例如:

    aboutToAppear() {
        this.fetchData();
    }
    

通过以上步骤,鸿蒙Next UI可以在异步数据获取完成后自动更新UI,实现数据的动态展示。

回到顶部