组件:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V2/ts-components-summary-0000001478181369-V2
属性:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V3/ts-universal-attributes-border-0000001333720989-V3
@ohos.router (页面路由)
导入模块 import router from '@ohos.router'
跳转到应用内的指定页面。
router.pushUrl({
url: 'pages/routerpage2',
params: {
data1: 'message',
data2: {
data3: [123, 456, 789]
}
}
})
.then(() => {
// success
})
.catch(err => {
console.error(`pushUrl failed, code is ${err.code}, message is ${err.message}`);
})
用应用内的某个页面替换当前页面,并销毁被替换的页面。不支持设置页面转场动效,如需设置,推荐使用Navigation组件。
router.replaceUrl({
url: 'pages/detail',
params: {
data1: 'message'
}
})
.then(() => {
// success
})
.catch(err => {
console.error(`replaceUrl failed, code is ${err.code}, message is ${err.message}`);
})
返回上一页面或指定的页面。
router.back({url:'pages/detail'});
如果url未设置,则返回上一页,页面不会重新构建,页面栈里面的page不会回收,出栈后会被回收。
数据存储
1 概述
在移动互联网蓬勃发展的今天,移动应用给我们生活带来了极大的便利,这些便利的本质在于数据的互联互通。因此在应用的开发中数据存储占据了非常重要的位置,HarmonyOS应用开发也不例外。
2 什么是首选项
首选项为应用提供Key-Value键值型的数据存储能力,支持应用持久化轻量级数据,并对其进行增删改查等。该存储对象中的数据会被缓存在内存中,因此它可以获得更快的存取速度,下面详细介绍下首选项的开发过程。
3 首选项运作机制
首选项的特点是:
1、以Key-Value形式存储数据
Key是不重复的关键字,Value是数据值。
2、非关系型数据库
区别于关系型数据库,它不保证遵循ACID(Atomicity, Consistency, Isolation and Durability)特性,数据之间无关系。
进程中每个文件仅存在一个Preferences实例,应用获取到实例后,可以从中读取数据,或者将数据存入实例中。通过调用flush方法可以将实例中的数据回写到文件里。
//引入模块
import dataPreferences from '@ohos.data.preferences';
// 保存数据
await preferences.put(key, value);
//取数据
value = await preferences.get(key);
// 数据持久化,通过flush方法把应用数据保存到文件中,使得应用数据保存期限变长
preferences.flush();
//删除数据
value = preferences.delete(key);
value.then(() => {
Logger.info("删除成功");
}).catch((err) => {
Logger.error(err);
});
详细:https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101667367018821971
1、创建一个PreferencesUtil.est文件
导入import dataPreferences from '@ohos.data.preferences';
模块
定义常量
//PreferencesUtil.est
`import dataPreferences from '@ohos.data.preferences';
const PREFERENCES_NAME='myPreferences'//数据库名字
2、需要在entryAbility.ets的onCreate方法获取首选项实例
//entryAbility.ets
import PreferencesUtil from '../common/database/PreferencesUtil';
PreferencesUtil.createPreferences(this.context);
注意entryAbility文件后缀
// PreferencesUtil.ets
createPreferences(context: Context) {
globalThis.getPreferences = (() => {
// 获取首选项实例
let preferences: Promise<dataPreferences.Preferences> = dataPreferences.getPreferences(context, PREFERENCES_NAME);
return preferences;
});
}
保存数据
//zdyDetail.ets
const USER_DATA= 'myData';//表中存储的关键字
PreferencesUtil.save(USER_DATA, this.text);
// PreferencesUtil.ets
save(key,value) {
globalThis.getPreferences().then(async (preferences) => {
// 保存数据
Logger.info(key+'这是一个数据保存');
await preferences.put(key, value);
preferences.flush();
}).catch((err) => {
Logger.error(TAG, 'put the preferences failed, err: ' + err);
});
}
获取数据
//zdyDetail.ets
const USER_DATA= 'myData';//表中存储的关键字
PreferencesUtil.get(USER_DATA).then((value) => {
this.getText = value;
Logger.info(value+'这是一个value');
});
// PreferencesUtil.ets
get(key,value) {
async get(key) {
let data;
const preferences = await globalThis.getPreferences();
data = await preferences.get(key,data);
Logger.info('这是一个get方法'+data);
return data;
}
}
效果:
保存前
保存并查询
全部代码
//EntryAbility.ets
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
GlobalContext.getContext().setObject('abilityWant', want);
PreferencesUtil.createPreferences(this.context);
}
//PreferencesUtil.ets
import dataPreferences from '@ohos.data.preferences';
import Logger from '../utils/Logger';
const TAG = '[PreferencesUtil]';
const PREFERENCES_NAME = 'myPreferences';
export class PreferencesUtil {
createPreferences(context: Context) {
globalThis.getPreferences = (() => {
// 获取首选项实例
let preferences: Promise<dataPreferences.Preferences> = dataPreferences.getPreferences(context, PREFERENCES_NAME);
return preferences;
});
}
save(key,value) {
globalThis.getPreferences().then(async (preferences) => {
// 保存数据
Logger.info(key+'这是一个保存数据');
await preferences.put(key, value);
preferences.flush();
}).catch((err) => {
Logger.error(TAG, 'put the preferences failed, err: ' + err);
});
}
async get(key) {
let data;
const preferences = await globalThis.getPreferences();
data = await preferences.get(key,data);
Logger.info('这是一个get方法2'+data);
return data;
}
}
export default new PreferencesUtil();
//zdyDetail.ets
import image from '@ohos.multimedia.image';
import PreferencesUtil from '../common/database/PreferencesUtil';
import Logger from '../common/utils/Logger';
const USER_DATA= 'myData';//表中存储的关键字
@Component
export struct zdyDetail {
@State text : string=''
@State getText :string=''
build(){
Column(){
TextInput({ placeholder: '请输入一个值用于保存' })
.onChange((value: string) => {
this.text = value
})
Button('这是一个保存数据按钮,点击我即可保存用户数据').onClick((event: ClickEvent) => {
Logger.info('这是一个保存'+ this.text);
PreferencesUtil.save(USER_DATA, this.text);
}).margin({top : '100'})
Button('这是一个获取数据按钮,点击即可查看保存数据').onClick((event: ClickEvent) => {
PreferencesUtil.get(USER_DATA).then((value) => {
this.getText = value;
Logger.info(value+'这是一个value');
});
}).margin({top : '100'})
Text(this.getText)
}
}
aboutToAppear(){
this.text="22"
}
}