HarmonyOS 开发之———ArkJS 基础—〉自定义组件使用。

一、 ArkJS 中,自定义组件是构建复杂用户界面的重要部分。自定义组件可以让开发者扩展 ArkUI 提供的原生组件,或者创建全新的组件来满足特定的设计需求。


1. 创建自定义组件:
首先,您需要创建一个新的 JavaScript 或 TypeScript 文件来定义您的自定义组件。例如,如果您要创建一个名为 `MyCustomComponent` 的组件,您可以创建一个 `my-custom-component.tsx` 文件。


 2. 定义组件类:
在您的组件文件中,您需要使用 JSX 来定义组件的结构,并使用 ArkUI 的组件类来构建 UI。

例如:typescript

import { Component } from '@ohos/arkui';
export default class MyCustomComponent extends Component {
  render() {
    return (
      <div class="my-custom-component">
        <!-- 组件内容 -->
      </div>
    );
  }
}

 3. 添加样式
使用 CSS 或 CSSX 文件来定义组件的样式。您可以直接在组件文件中定义样式,或者在单独的样式文件中引用。
css
.my-custom-component {
  /* 组件样式 */
}

4. 使用组件
在您的 ArkJS 应用中,您可以像使用其他 ArkUI 组件一样使用自定义组件。
`typescript
import { MyCustomComponent } from './my-custom-component';
const app = new App({
  components: [MyCustomComponent],
  // ...其他配置
});

5. 事件处理和状态管理
您可以在自定义组件中定义事件处理函数来响应用户交互,同时也可以使用 ArkJS 的状态管理功能来管理组件的状态。
typescript
export default class MyCustomComponent extends Component {
  state = {
    count: 0,
  };
  addCount = () => {
    this.setState({ count: this.state.count + 1 });
  };
  render() {
    return (
      <div class="my-custom-component" onclick={this.addCount}>
        Clicked {this.state.count} times
      </div>
    );
  }
}

6. 测试和调试
确保您的自定义组件在不同的设备和场景下都能正常工作。您可以在开发过程中使用 ArkUI 提供的调试工具来检查组件的渲染和事件处理。

7. 打包和分发
当您的自定义组件开发完成后,您可以使用 HarmonyOS 的打包工具将它们打包成可分发的格式,然后在需要的地方引入即可。
通过以上步骤,您可以在 ArkJS 中实现自定义组件,并将其应用于 HarmonyOS 应用程序中,以构建出满足特定需求的用户界面。

 

HarmonyOS开发实战指南:ArkTS/JS应用“实时/动态预览规范” 在预览器界面,可以在预览器中操作应用/服务的界面交互动作,如单击、跳转、滑动等,与应用/服务运行在真机设备上的界面交互体验一致。 阅读详情

相关推荐

【鸿蒙基于API 13实战开发】—— ArkUI 组件:使用画布绘制自定义图形 (Canvas)

使用 CanvasRenderingContext2D 对象在Canvas画布上绘制。@Entry@Component//用来配置CanvasRenderingContext2D对象的参数,包括是否开启抗锯齿,true表明开启抗锯齿。//用来创建CanvasRenderingContext2D对象,通过在canvas中调用CanvasRenderingContext2D对象来绘制。build() {//在canvas中调用CanvasRenderingContext2D对象。

shangkangba的博客 1113

第一个纯血鸿蒙应用(Napi开发-ArtTS调用C/C++)

Node-API是用于封装JavaScript能力为Native插件的API,独立于底层JavaScript,并作为Node.js的一部分。

qq_20089667的博客 2040

HarmonyOS开发实战:ArkTS接口绑定

通过napi_wrap将ArkTS对象与Native的C++对象绑定,后续操作时再通过napi_unwrap将ArkTS对象绑定的C++对象取出,并对其进行操作。

qazwsx957486的博客 1178

鸿蒙5.0版开发:ArkTS高级组件-@ohos.arkui.advanced.SegmentButton (分段按钮)

分段按钮组件,包含页签类分段按钮、单选类分段按钮、多选类分段按钮。

m0_69424697的博客 1343

HarmonyOS鸿蒙开发指南:基于ArkTS开发 轻量级智能穿戴 页面路由、应用退出、生命周期和百分比使用

总体上百分比的使用可以在一定程度上支持对相同布局在不同屏幕上的显示的自动缩放,能够达到一定的多设备适配效果,如果两个设备的屏幕尺寸的长宽比是相同的,仅仅是尺寸不一样,那布局的显示排布在这两个设备上将会显示的比较协调一致;支持部分字段(width,height,margin,top,left)的百分比设置,通过指定百分比,让框架在运行时自动换算成真实像素值,可以在一定程度上帮助应用进行多设备的显示自适应,在不同尺寸的屏幕上显示尽可能做到一致或合理的布局。/* 设置按钮组件的高度为父组件的30% */

斌擎科技 1241

ark-js:适用于JavaScript的ARK客户端

:warning: 不推荐使用 :warning: * 方舟JS Ark JS是一个用于发送ARK事务JavaScript库。 它的主要好处是它不需要本地安装的ARK节点,而是利用网络上的现有对等节点。 它可以从客户端被用作编译的模块,或者服务器作为一个标准的Node.js模块上。 安装 建造 构建供客户端使用的browserify模块: npm build:browserify 清洁: npm clean:browserify 测验 npm test 使用mocha + schedule.js编写的测试。 用法 在客户端上: < script src =" node_modules/arkjs/bundle

ark:基于NestJS,TypeORM,NEXT.js(v9.3)和Material UI(v4)的最简单的身份验证系统

基于 , , 和的最简单的身份验证系统。 特征 跨平台-Mac,Linux和Windows 与实体的数据库同步-由 服务器端渲染-由提供 API服务器-由提供 身份验证-由提供支持 设计 技术领域 热重装以获得开发人员的经验:) dev-编译您的TS应用程序,并在修改文件后重新启动 -React框架 郎郎可扩展的Javascript 数据库世界上最先进的开源关系数据库 ORM(对象关系映射) 用于TypeScript和JavaScript的ORM(ES7,ES6,ES5) 服务器 一个渐进式的Node.js框架,用于构建高效,可靠和可扩展的服务器端应用程序在内部使用 -Node.js的快速,简单,极简的Web框架 -React框架 环境变量 从.env加载用于nodejs项目的环境变量 一个安全的webpack插件,支持dotenv和其他环境变量,并且仅公开您选择和使用的内

微信小程序后台定位与实时位置更新的实战指南

本文提供了微信小程序实现后台定位与实时位置更新的完整实战指南。针对小程序退到后台后位置更新中断的痛点,详细解析了基于`startLocationUpdateBackground`API的后台定位解决方案。内容涵盖从隐私协议配置、项目权限声明,到授权、启动、监听、停止的核心代码流程,并分享了真机调试、性能优化及权限引导等关键避坑经验,帮助开发者构建稳定可靠的后台位置服务。

weixin_29008055的博客 468

银河麒麟V10离线环境下的Python项目迁移:从Windows依赖到ARM架构适配

本文详细介绍了在银河麒麟V10离线环境下将Python项目从Windows迁移到ARM架构的完整流程。重点讲解了离线安装pip、virtualenv等基础工具的方法,以及如何解决ARM架构兼容性问题,确保项目依赖正确迁移。文章还提供了常见问题解决方案和性能优化建议,帮助开发者顺利完成国产化平台适配工作。

weixin_42639246的博客 423

Ubuntu单系统安装全攻略:从删除Windows到UEFI引导设置(避坑指南)

本文提供Ubuntu单系统安装的完整指南,涵盖从安全删除Windows系统到UEFI引导设置的详细步骤。通过专业工具准备、分区方案设计、引导加载器配置等关键环节,帮助用户避免常见安装问题,实现纯净高效的Ubuntu单系统环境。特别强调UEFI引导的深度配置与安装后的性能优化,适合希望彻底转向Linux的用户。

weixin_29210727的博客 409

HyperLPR3车牌识别-Android-SDK光速部署与使用

基于深度学习高性能中文车牌识别 High Performance Chinese License Plate Recognition Framework.快速部署AndroidSDK

tunm 6119

innovus:streamOut gds中pg text带有冒号(:)解决办法

streamOut后查看layout,发现部分PG text后面加了冒号,比如VDD: / VSS:。当然,这个问题还有另一种解决办法,就是通过脚本给terminal打text再streamOut。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1190

【OpenClaw从入门到精通】第60篇:多智能体协同实战——用“龙虾”搭建你的数字员工团队(2026企业版)

2026年AI Agent企业落地的核心趋势,正从“单Agent单兵作战”转向“多智能体协同组网”。本文以全球开发者先锋大会“百虾大战”真实案例为蓝本,深度拆解OpenClaw多智能体协同的技术内核——三层解耦架构(模型层-技能层-网关层),系统搭建包含项目经理、架构师、执行者、质量把关者的4大核心Agent团队。通过三种主流协作架构对比、全链路配置代码实操、故障自愈实战演练,结合电商新品上架虚拟场景全流程演示,解决企业多Agent部署中的权限隔离、任务协同、运维自治三大核心痛点。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 769

时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测

时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测 目录时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测基本介绍ARIMAXVARVARMAVARMAXSESHWES参考资料 基本介绍 本文介绍ARIMAX、VAR、VARMA和VARMAX基本概念及其Python程序设计。 ARIMAX 具有外源回归量的自回归整合移动平均值(ARIMAX)是 ARIMA 模型的扩展,其还包括外生变量的建模。 外生变量也称为协变量,可以被认为是并行输入序列,其在与

前程算法屋的博客 6688

dToF直方图之美_deadtime死区时间

IMX459的死区时间可以在6ns,这个时间是什么级别,车载激光雷达激光器的光脉宽一般都在4ns以上,也就是这个时间贴近去SPAD的死区时间,这就导致了pile up会非常弱,不会有太多数量的光子计数堆积,加上某些SPAD设计,对TDC有一些更深入的考量,所以不需要去校正pile up算法。Sensor层面决定了pile up的复杂程度,如果一个dToF的SPAD一致性非常好,那么pile up校正可以简单到极致,也就是一句代码的事,比如IMX611,优秀到不需要后端去考虑校正pile up。

dream it possible 1435

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: HarmonyOs开发之——ArkTs基础知识介绍。
下一篇: HarmonyOs开发之ArkTS 自定义组件开发使用要点
No Promises﹉
博客等级 码龄7年 390粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

No Promises﹉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值