用服务器建立网站,中介网站模板,成都网站建设市场,国际商业网站一、正常引用字符串资源文件内容
在 ArkUI 中#xff0c;string.json 中的字符串资源正常情况下使用如下方式引用#xff1a;
Entry
Component
struct LoginPage {build() {Column() {Text($r(app.string.title))}}}二、资源转string类型
上面的代码没问题是因为 Text(con…一、正常引用字符串资源文件内容
在 ArkUI 中string.json 中的字符串资源正常情况下使用如下方式引用
Entry
Component
struct LoginPage {build() {Column() {Text($r(app.string.title))}}}二、资源转string类型
上面的代码没问题是因为 Text(content?: string | Resource) 内的参数是可以接收 string 或者 Resource 类型的
但是在某些组件的入参并不支持 Resource 类型比如 RichText(content: string)它只接收一个不可为空的字符串类型这个时候想使用 string.json 内的资源就需要用到 resourceManager 了。
Entry
Component
struct LoginPage {build() {Column() {Text($r(app.string.title))// toString() 可以省略 RichText(getContext(this).resourceManager.getStringSync($r(app.string.title)).toString())}}}三、更多 API
附上resourceManager 官方的 API 文档
resourceManager 内相关 string 的重载函数还有很多反正就是支持不同入参的同步、异步形式加载
getString(resld: number, callback: AsyncCallbackstring): void
getString(resld: number): Promisestring
getStringValue(resource: Resource, callback: _AsyncCalbackstring): void
getStringValue(resource: Resource): Promisestring
getStringArray(resld: number, callback: AsyncCallbackArraystring): void
getStringArray(resld: number): PromiseArraystring
getStringArrayValue(resource: Resource, callback:_AsyncCallbackArraystring): void
getStringArrayValue(resource: Resource): PromiseArraystring
getStringByName(resName: string, callback: AsyncCallbackstring): void
getStringByName(resName: string): Promisestring
getStringArrayByName(resName: string, callback:_AsyncCallbackArraystring): void
getStringArrayByName(resName: string): PromiseArraystring: void
getPluralStringByName(resName: string, num: number, callback: _AsyncCallbackstring): void
getPluralStringByName(resName: string, num: number): Promisestring
getStringSync(resld: number): string
getStringSync(resource: Resource): string
getStringByNameSync(resName: string): string图片的看起来应该更直观
四、注意
需要注意的是 getContext(this) 方法除了在 Abliity 里可以自由调用并不能在正常的容器组件内的代码块里调用通常只能在上面这种函数入参或者 onClick 这种事件的箭头函数的代码块里才能调用举个栗子
// 错误方式会静态检查报错
let ctx getContext(this)// 正确方式 1
Button(getContext(this).resourceManager.getStringSync(0x11).toString())// 正确方式 2
Button(登录).onClick((e) {let ctx getContext(this)
})// 其他场景暂时还没研究过以上就是本文的全部内容感兴趣可以关注专栏会持续更新…