arkts中状态管理
一:1 arkts中localstorage的使用
(1)在entryAbility.ets中定义localstorage变量
export default class EntryAbility extends UIAbility {
CITY:LocalStorage=new LocalStorage({city:"beijing"});
onWindowStageCreate(windowStage: window.WindowStage) {
// Main window is created, set main page for this ability
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
windowStage.loadContent('pages/Index',this.CITY, (err, data) => {
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
});
}
}
(2) 在当前页面通过localstorage的app定义一个storage对象并传入entry装饰器函数中
let storage=LocalStorage.GetShared();
@Entry(storage)
@Component
struct Index {
build() {
Column(){
}
}
}
(3)在当前页面中定义一个变量别名作为localstorage变量的引用
let storage=LocalStorage.GetShared();
@Entry(storage)
@Component
struct Index {
@State list:MyItem[]=[]
@LocalStorageLink("city") cityName:string="北京"
build() {
Column(){
Row() {
Text(`当前城市${cityName}`)
}
}
}
二:arkts中AppStorage的使用。
localStorage虽然可以实现多页面数据共享,但是在多个页面需要每次定义storage对象然后通过
LocalStorage.GetShared();去获得当前storage的值。而AppStorage则提供了一个更简单的方式。使用方式如下:
(1)在entryAbility.ets中定义全局的对象
export default class EntryAbility extends UIAbility {
onWindowStageCreate(windowStage: window.WindowStage) {
AppStorage.SetOrCreate("city","beijing")
windowStage.loadContent('pages/Index',(err, data) => {
});
}
onForeground() {
// Ability has brought to foreground
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
}
onBackground() {
// Ability has back to background
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
}
}
通过AppStorage.SetOrCreate(key,value) ,定义全局的cityname,默认值为北京
2. 在具体页面中通过设置一个变量别名作为Appstorage变量city的引用ye
@Entry()
@Component
struct Index {
@StorageLink("city") cityName:string="beijing"
build() {
Column(){
Row() {
Column() {
Row(){
Text('${this.cityName}')
}
Row(){
Button("更改城市名称").onClick(()=>{
this.cityName="Shanghai"
//这里也可以通过AppStorage.set("city",'SHANHGHAI')进行更改
})
}
}
}
.height('100%')
}
}
注意:localstorage和appStorage都是存在内存之中,进程结束数据将会丢失
原文地址:https://blog.csdn.net/baidu_41601048/article/details/140485617
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!