HarmonyOS 鸿蒙Next AttributeModifier 不支持 web 组件,有其他解决组件复用的方案吗?
HarmonyOS 鸿蒙Next AttributeModifier 不支持 web 组件,有其他解决组件复用的方案吗?
期望给所有 WebView 提供封装好的 JsBridge 能力和一系列默认配置。
对 Web 组件有很多设置与事件绑定,封装后发现如果其他组件使用未经原组件定义的事件,找不到便捷的扩展方式。
@Extend 不允许 export。
AttributeModifier 不支持 web 组件。
每个使用我封装的 Web 组件的人,但凡需要新增一些绑定事件,都必须复制一遍 Web 组件的事件绑定列表。
要不就是必须扩展原封装组件,这太难受了。
让我把 Web 组件所有会用到的事件都尽可能包装一份也觉得不对劲。
这里的复用性太差了,有别的好的解决方案吗?
更多关于HarmonyOS 鸿蒙Next AttributeModifier 不支持 web 组件,有其他解决组件复用的方案吗?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
import { webview } from "@kit.ArkWeb";
import { BusinessError } from "@kit.BasicServicesKit";
@Entry
@Component
struct WebComponent1 {
controller: webview.WebviewController = new webview.WebviewController();
@State vm: PageParam = new PageParam(true, true)
build() {
Column() {
Button(‘loadUrl’).onClick(() => {
try {
this.controller.loadUrl(‘www.example1.com’);
} catch (error) {
let e: BusinessError = error as BusinessError;
console.error(ErrorCode: ${e.code}, Message: ${e.message}
);
}
})
Web({ src: ‘www.example.com’, controller: this.controller })
.javaScriptAccess(this.vm.script)
.domStorageAccess(this.vm.Storage)
}
}
}
export class PageParam {
script: boolean = false
Storage: boolean = false
constructor(script: boolean, Storage: boolean) {
this.script = script
this.Storage = this.Storage
}
}
更多关于HarmonyOS 鸿蒙Next AttributeModifier 不支持 web 组件,有其他解决组件复用的方案吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对HarmonyOS鸿蒙Next中AttributeModifier不支持web组件的问题,确实存在其他解决组件复用的方案。
首先,可以通过抽取公共样式来减少冗余代码。在资源文件中定义自定义属性,然后在组件的样式或布局文件中引用这些属性,从而实现样式的复用。
其次,可以封装自定义组件。将具有相同功能和样式的组件封装成一个自定义组件,并放入公共组件库中。这样,在需要使用这些组件时,只需从公共组件库中调用即可,无需重复编写代码。
此外,还可以考虑使用组合式组件。当需要复用多个原生组件的结合体时,如Image+Text等复合自定义组件,可以在公共组件库中创建公用的自定义组件,该组件支持外部传入attributeModifier属性,从而实现更灵活的样式定制和组件复用。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html