HarmonyOS 鸿蒙Next中AppStorageV2状态更新

HarmonyOS 鸿蒙Next中AppStorageV2状态更新 使用AppStorage的V1时存储页面宽度可以每次监听到数据改变的时候调用AppStorage.setOrCreate就可以更新状态数据,

windowStage.getMainWindow((err,windowClass)=>{
  // 监听屏幕尺寸
  windowClass.on('windowSizeChange', (windowSize) => {
    // 创建或者更新AppStorage存储的屏幕宽度
    AppStorage.setOrCreate('windowWidth', windowSize.width);
  });
})

V2:

如果也在windoStage中

windowStage.getMainWindow((err,windowClass)=>{
  // 监听屏幕尺寸
  windowClass.on('windowSizeChange', (windowSize) => {
    // 创建或者更新AppStorage存储的屏幕宽度
    //AppStorage.setOrCreate('windowWidth', windowSize.width);
    // 这里直接改 第一次数据会保存,之后只会获取已经保存的数据,不会更新
    AppStorageV2.connect(Number,'windowWidth',() => new Number(windowSize.width));
  });
})

这样数据是不会更新的,我看过文档,几乎都是要在@ComponentV2中关联一个@Local的状态变量,用这个更新这个状态同时更新AppStorageV2中储存的状态。

问题:

UiAbility中不用@ComponentV2/@Local装饰的情况下,怎么像V1一样,监听到屏幕尺寸改变就直接更新AppStorageV2存储的屏幕宽度。


更多关于HarmonyOS 鸿蒙Next中AppStorageV2状态更新的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next中AppStorageV2状态更新的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,AppStorageV2是用于全局状态管理的工具,支持跨组件、跨页面的数据共享与更新。状态更新时,开发者可以通过@StorageLink@StorageProp装饰器绑定状态变量,当状态变化时,相关组件会自动重新渲染。AppStorageV2还支持持久化存储,确保应用重启后状态数据不丢失。更新状态时,建议使用AppStorage.SetAppStorage.Get方法进行操作,确保数据一致性和高效性。

回到顶部