当前位置: 首页 > article >正文

鸿蒙自定义UI组件导出使用

上期讲解了在@Entry入口写了一个系统的下拉列表组件,如果我们想要封装一个可供复用的组件供团队其他人使用,那么需要掌握一下自定义组件的写法:

1、自定义可导入组件 - export 声明模块

如果要定义一个在外部可使用的组件 ,

需要再定义组件时 , 使用 export 关键字 修饰 struct 结构体 ;

@Component

export struct ComponentName {

    build(){

        // UI 声明

    }

}

参考下述代码:

导出一个DropdownComponent组件

import { hilog } from '@kit.PerformanceAnalysisKit';

interface FontStyle {
  size: number;
  weight: number;
}

@Component
export struct DropdownComponent {
  TAG: string = 'DropdownComponent'
  // 定义 Dropdown 组件的参数
  options: Array<SelectOption> = []; // 选项列表
  selectedIndex: number = 0; // 默认选中的索引
  selectedValue: string = ''; // 选中的值
  fontStyle: FontStyle = { size: 16, weight: 500 }; // 默认字体样式
  fontColor: string = '#182431'; // 字体颜色
  selectedOptionFont: FontStyle = { size: 30, weight: 800 }; // 已选项字体样式
  optionFont: FontStyle = { size: 16, weight: 400 }; // 选项字体样式
  onSelectCallback: (index: number, value: string) => void = () => {
  }; // 默认空函数

  build() {
    Column() {
      Select(this.options)
        .selected(this.selectedIndex)// 默认选中的索引
        .value(this.selectedValue)// 默认选中的值
        .font(this.fontStyle)// 设置字体样式
        .fontColor(this.fontColor)// 设置字体颜色
        .selectedOptionFont(this.selectedOptionFont)// 设置已选项字体样式
        .optionFont(this.optionFont)// 设置选项字体样式
        .onSelect((index: number) => {
          const selectedValue = this.options[index].value.toString();
          hilog.info(0x0000, this.TAG,
            `DropdownComponent Select: index is ${index}, selectedValue is ${selectedValue}`);
          this.onSelectCallback(index, selectedValue); // 调用回调函数
        })
    }.width('100%');
  }
}

然后在@Entry的入口去引用这个文件

import { DropdownComponent } from './DropdownComponent'; // 导入 DropdownComponent
import { hilog } from '@kit.PerformanceAnalysisKit';


@Entry
@Component
struct Index {

  TAG_LOG: string = 'Index';

  defaultValue: string = '下拉列表';
  // 定义选项数组,包含 value 和可选的 label
  options: Array<SelectOption> = [
    { value: 'aaa' },
    { value: 'bbb' },
    { value: 'ccc' }

  ];
  selectIndex: number = 0;
  selectValue: string = 'aaa'

  handleSelect(index: number, value: string) {
    hilog.info(0x0000, 'Index', `handleSelect Selected index: ${index}, value: ${value}`);
  }

  build() {
    Column() {
      DropdownComponent({
        options: this.options,
        selectedIndex: this.selectIndex,
        selectedValue: this.selectValue,
        onSelectCallback: this.handleSelect
      }).width('100%');
    }.width('100%')

  }
}

最后看一下运行界面

以及日志打印

参考:【OpenHarmony】ArkTS 语法基础 ② ( ArkTS 自定义组件 | 自定义可导入组件 - export 声明模块 | 导入自定义组件 - import 导入组件 )_arkts import-CSDN博客


http://www.kler.cn/a/397068.html

相关文章:

  • 无效的目标发行版17和无法连接Maven进程问题
  • 第9章 DIV+CSS布局作业
  • 用户自定义IP核——ZYNQ学习笔记6
  • STM32单片机CAN总线汽车线路通断检测
  • 【从零开始的LeetCode-算法】3239. 最少翻转次数使二进制矩阵回文 I
  • C++的一些模版
  • EXCEL 或 WPS 列下划线转驼峰
  • Dubbo RPC线程模型
  • ADS项目笔记 1. 低噪声放大器LNA天线一体化设计
  • 基于Python爬虫大屏可视化的热门旅游景点数据分析系统
  • 高斯混合模型回归(Gaussian Mixture Model Regression,GMM回归)
  • c语言学习19参数传递
  • WebChromeClient 方法分类及其功能
  • Python习题 250:删除空文件夹
  • dpdk tm eth event驱动协同完成收发包流程
  • [C++] 智能指针
  • Java爬虫(Jsoup)详解
  • [产品管理-82]:《产品经理从入门到精通》产品经理的基本思维与核心思想
  • 探索大规模语言模型(LLM)在心理健康护理领域中的应用与潜力
  • react 中 useMemo Hook 作用
  • 记录no.28
  • 代码随想录第46期 单调栈
  • 用户自定义IP核——ZYNQ学习笔记6
  • [JAVAEE] 网络编程
  • Pytest从入门到精通
  • pytest结合allure做接口自动化