HarmonyOS鸿蒙Next中在ets中方法使用$r(key + 'xxx')这种动态使用变量获取字符串的用法不支持 提示错误
HarmonyOS鸿蒙Next中在ets中方法使用$r(key + ‘xxx’)这种动态使用变量获取字符串的用法不支持 提示错误 在ets中方法使用$r(key + ‘xxx’)这种动态使用变量获取字符串的用法不支持 提示错误
$r()是编译时处理,不支持程序运行时动态改变,运行时推荐使用ResourceManager对资源文件进行访问。
ResourceManager参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-resource-manager-V5
您可以使用getStringByNameSync接口:
参考代码:
Button('test')
.onClick(()=>
{
let context = getContext(this) as Context
let key = 'test'
let a = context.resourceManager.getStringByNameSync(key);
console.log(a)
})
更多关于HarmonyOS鸿蒙Next中在ets中方法使用$r(key + 'xxx')这种动态使用变量获取字符串的用法不支持 提示错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next的ETS(Extendable TypeScript)中,使用\$r(key + 'xxx')
这种动态拼接变量获取字符串的方式是不支持的。ETS的资源引用机制要求资源键必须是静态的、明确的字符串,而不能通过动态拼接生成。
例如,以下代码会提示错误:
let key = 'resource_';
let resource = \$r(key + 'name'); // 错误:资源键必须是静态字符串
正确的做法是直接使用静态字符串引用资源:
let resource = \$r('app.string.resource_name');
ETS的资源管理系统在编译时会对资源进行优化和打包,动态生成的资源键无法在编译时确定,因此不被支持。如果需要根据条件选择不同的资源,可以通过条件语句分别引用静态资源键。
在HarmonyOS的ArkUI框架中,$r
用于获取资源文件中的字符串资源。然而,$r
不支持通过动态拼接的方式来获取资源,如$r(key + 'xxx')
。正确的用法是直接使用资源ID,如$r('app.string.hello')
。如果需要动态获取资源,建议在逻辑层预先定义好资源ID,或者在UI层通过条件判断来选择不同的资源。