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

2 回复
web组件复用可以使用loadUrl方法,不知道是否可以满足
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

回到顶部