HarmonyOS 鸿蒙Next builder全局构建函数 应该写在哪里 才可以让整个应用都能调取

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next builder全局构建函数 应该写在哪里 才可以让整个应用都能调取

builder全局构建函数  应该写在哪里 ? 才可以让整个应用都能调取 ? 怎么调取?

cke_138.png

6 回复

在前面加个export导出就行了

src/main/ets/view/MyBuilder.ets

[@Builder](/user/Builder)
export function MyGlobalBuilderFunction(){
  Text('哈哈')
}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

src/main/ets/pages/Page20.ets

import { MyGlobalBuilderFunction } from '../view/MyBuilder'

@Entry @Component struct Page20 { build() { Column() { MyGlobalBuilderFunction() }.width(100).height(100) } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

老师,您说的@Builder我试了,好用的。那个@Extend我用export报错了,这个得怎么写呀。

@Extend只可以当前页面使用不可以导出

如果要做全局组件属性可以使用attributeModifier

src/main/ets/view/MyBuilder.ets

//导出组件
[@Builder](/user/Builder)
export function MyGlobalBuilderFunction() {
  Text('哈哈')
    .abc()
}

//导出组件样式,不支持export跨页面导出,仅支持当前页面使用。 @Extend(Text) function abc() { .fontSize(20) .fontColor(Color.White) .backgroundColor(Color.Blue) }

//导出组件样式,支持export跨页面导出. export class MyTextModifier implements AttributeModifier<TextAttribute> {

applyNormalAttribute(instance: TextAttribute): void { instance.fontSize(20) instance.fontColor(Color.White) instance.backgroundColor(Color.Blue) } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

src/main/ets/pages/Page27.ets

import { MyGlobalBuilderFunction, MyTextModifier } from ‘…/view/MyBuilder’

@Entry @Component struct Page27 { build() { Column() { MyGlobalBuilderFunction() Text(‘呵呵’).attributeModifier(new MyTextModifier()) }.width(100).height(100) } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

HarmonyOS 鸿蒙Next的全局构建函数应写在可被全局访问的位置,如全局模块或工具类中。确保该函数被正确导出,并遵循HarmonyOS的模块化和包管理机制。全局构建函数可通过import语句在整个应用中被其他组件或页面调用。

如果问题依旧没法解决,请加我微信,我的微信是itying888。这样可以提供更具体的帮助。

回到顶部