【关键字】
Image自定义组件 / Resource类型
【问题描述】
问题一:
工程含一个entry和一个library,entry使用library的一个含Image的自定义组件,期望可以用entry中的图片来动态设置library中的Image,该如何操作?类似 Image($r('app.media.xxx')) 的形式是可以读到目标资源的,但如果在自定义组件中定义一个变量(imgPath: string = 'app.media.xxx'),然后 Image($r(this.imgPath))就加载不出来图片了。
问题二:
1、$r('xxx') 拿到的是一个资源的完整数据么?如果是,这种方式是否内存成本相对高一些?比如一些参数配置在model中时,还没有放到UI中呈现时,其就把资源的信息完整加载了。
2、鸿蒙在设计时是考虑过上述场景,并且建议的处理方式就是直接传 $r('xxx') 么?有没有一些这么做的考量思路可以Share的?
【解决方案】
问题一:
在定义变量时尝试将$r('app.media.xxx')整个一起定义,该类型为Resource类型,
例如:@State icon:Resource = $r('app.media.app_icon')
在使用时则是:Image(this.icon)
问题二:
1、是资源的完整数据,内存成本相对高一些。
2、并不是建议写成$r('xxx')的形式,这个只是一种解决方案,因为当前不支持参数直接传入图片资源路径的形式。