HarmonyOS定义了一系列弹窗反馈类的组件
和前端开辟框架VUE3配套生态库element plus中的提供各种组件相比,还是要少一些。大概是手机端利用和PC端利用的差异导致的
如果内置的弹窗不满足要求,可以基于CustomDialog自定义出各种个性化的反馈组件。
起首新建一个ets文件,使用CustomDialog装饰器定义一个自定义的dialog。其内部的语法和平凡的Component是完全雷同的,通过组合基础组件可以实现差异的布局。
注意需要传递的参数使用@Link举行修饰,在“实例化”的时候引用
- @CustomDialog
- export default struct CustomActionSheet {
- @Link actionList: string[]
- controller: CustomDialogController
- cancel: () => void
- build() {
- Column() {
- ForEach(this.actionList, (item: string) => {
- Text(item)
- .width('100%')
- .height(24)
- .fontSize(16)
- .margin({ top: 2, bottom: 2 })
- .textAlign(TextAlign.Center)
- .onClick((e)=>{
- })
- }, item => item)
- Button('取消', { type: ButtonType.Normal }).borderRadius(4).width(80).onClick((e) => {
- this.controller.close()
- this.cancel()
- })
- }
- .justifyContent(FlexAlign.SpaceAround)
- .alignItems(HorizontalAlign.Center)
- .height(200)
- .padding({ left: 10, top: 20 })
- .borderRadius(8)
- }
- }
复制代码 然后在父组件中实例化CustomDialogController,并在builder属性中引用这个CustomDialog
- diaglogController: CustomDialogController = new CustomDialogController({
- builder: CustomActionSheet({
- cancel: this.onCancel,
- actionList: $actionList
- }),
- cancel: this.existApp,
- autoCancel: true,
- alignment: DialogAlignment.Bottom,
- offset: { dx: 0, dy: -20 },
- gridCount: 4,
- customStyle: false
- })
复制代码 在需要触发的地方调用即可
- Button().onClick((e) => {
- if (this.diaglogController != undefined) {
- this.diaglogController.open()
- }
- })
复制代码 最闭幕果:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |