HarmonyOS 数据持久化后同步问题

当前需求需要将同步的数据保存到本地,后期对数据处理后需要发送通知到各个位置,但是保存本地后发送通知通知到页面后调用数据的时候明明接收和定义的类型是一致的但是就是无法进行赋值,导致数据不能同步,报TypeError: Obj is not a Valid object。

代码:

import { BusManager } from './BusManager';
import { StockGroupModel } from './StockGroupModel';
import { StockUtils } from './StockUtils';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct Index {
  @State allGroups: StockGroupModel[] = []
  aboutToAppear(): void {
    BusManager.getInstance().register("STOCK_GROUP_UPDATE", this.updateAllGroups)

    StockUtils.shared().queryGroups().then((val) => {
      this.allGroups = val
    })
  }
  //  监听方法,本地保存后会调用,用来进行数据同步刷新UI展示
  updateAllGroups() {
    StockUtils.shared().getAllGroups()
      .then((val: StockGroupModel[]) => {
        //  这里的左右两侧数据类型一致为什么会出错呢?
        this.allGroups = val
      })
      .catch((error: BusinessError) => {
        //  为什么会在这里报TypeError: Obj is not a Valid object@12f7ed7a
        console.log(error)
      })
  }
  build() {
    Column() {
      List({ space: 12 }) {
        ListItem() {
          Button("首次安装点击,模拟接口同步数据保存到本地")
            .width("100%")
            .padding({ top: 8, bottom: 8 })
            .onClick(() => {
              StockUtils.shared().syncGroups()
                .then(() => {
                  this.allGroups = StockUtils.shared().allGroups
                })
                .catch((error: BusinessError) => {
                  console.log(error)
                })
            })
        }
        ListItem() {
          Button("模拟请求接口并在本地插入数据")
            .width("100%")
            .padding({ top: 8, bottom: 8 })
            .onClick(() => {
              StockUtils.shared().addStock([0], ["SH600001", "SZ002013"])
                .then((val: boolean) => {
                  console.log(" ADD SUCCESS")
                })
                .catch((error: BusinessError) => {
                  console.log(error)
                })
            })
        }
        ListItem() {
          Text(this.allGroups.length > 0 ? JSON.stringify(this.allGroups) : "此处用来展示同步后的数据")
            .width("100%")
            .textAlign(TextAlign.Center)
        }
      }
      .layoutWeight(1)
    }
    .width("100%")
    .height("100%")
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
HarmonyOS
2024-12-27 14:04:48
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
aquaa

是因为在注册方法时没有绑定this ,执行时this为undifined。index.ets 15行改成BusManager.getInstance().register("STOCK_GROUP_UPDATE", this.updateAllGroups.bind(this))

分享
微博
QQ
微信
回复
2024-12-27 16:16:24
相关问题
网络请求创建持久问题
1552浏览 • 1回复 待解决
关于数据持久使用问题
1190浏览 • 1回复 待解决
数据持久遇到的各种问题
1127浏览 • 1回复 待解决
HarmonyOS 数据持久demo
887浏览 • 1回复 待解决
如何在IDE每次run项目数据持久
1431浏览 • 1回复 待解决
PersistentStorage持久存储问题
1721浏览 • 0回复 待解决
HarmonyOS 基本类型数据持久
966浏览 • 1回复 待解决
HarmonyOS 如何进行数据持久
1144浏览 • 1回复 待解决
卡片开发中如何实现数据持久
3257浏览 • 1回复 待解决
关于数据持久存储要如何实现
1581浏览 • 2回复 待解决
如何实现应用数据持久存储
3403浏览 • 1回复 待解决
数据持久的方式有哪些?
2055浏览 • 1回复 待解决
HarmonyOS 数据同步问题
709浏览 • 1回复 待解决
求大佬告知如何实现数据持久
1470浏览 • 1回复 待解决