HarmonyOS API:自定义组件

joytrian
发布于 2023-3-30 19:53
浏览
0收藏

版本:v3.1 Beta

slot插槽

更新时间: 2023-02-17 09:19


说明

从API Version 7 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

默认插槽

自定义组件中通过slot标签来承载父组件中定义的内容,使用slot标签可以更加灵活的控制自定义组件的内容元素,使用方式如下:

<!-- comp.hml -->
<div class="item">  
   <text class="text-style">下面使用父组件定义的内容</text> 
   <slot></slot> 
</div>

引用该自定义组件方式如下:

<!-- xxx.hml --> 
 <element name='comp' src='../../common/component/comp.hml'></element>  
 <div class="container">  
   <comp>
     <text class="text-style">父组件中定义的内容</text> 
   </comp>  
 </div>

具名插槽

当自定义组件中需要使用多个插槽时,可通过对插槽命名的方式进行区分,当填充插槽内容时,通过声明插槽名称,将内容加到对应的插槽中。

<!-- comp.hml -->
<div class="item">  
   <text class="text-style">下面使用父组件定义的内容</text> 
   <slot name="first"></slot>
   <slot name="second"></slot> 
</div>

引用该自定义组件方式如下:

<!-- xxx.hml --> 
 <element name='comp' src='../../common/component/comp.hml'></element>  
 <div class="container">  
   <comp>
     <text class="text-style" slot="second">插入第二个插槽中</text> 
     <text class="text-style" slot="first">插入第一个插槽中</text>
   </comp>  
 </div>


说明

name 和 slot 属性不支持绑定动态数据。

生命周期定义

更新时间: 2023-02-17 09:19


说明

从API Version 5 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。


我们为自定义组件提供了一系列生命周期回调方法,便于开发者管理自定义组件的内部逻辑。生命周期主要包括:onInit,onAttached,onDetached,onLayoutReady,onDestroy,onShow和onHide。下面我们依次介绍一下各个生命周期回调的时机。

属性

类型

描述

触发时机

onInit

Function

初始化自定义组件

自定义组件初始化生命周期回调,当自定义组件创建时,触发该回调,主要用于自定义组件中必须使用的数据初始化,该回调只会触发一次调用。

onAttached

Function

自定义组件装载

自定义组件被创建后,加入到Page组件树时,触发该回调,该回调触发时,表示组件将被进行显示,该生命周期可用于初始化显示相关数据,通常用于加载图片资源、开始执行动画等场景。

onLayoutReady

Function

自定义组件布局完成

自定义组件插入Page组件树后,将会对自定义组件进行布局计算,调整其内容元素尺寸与位置,当布局计算结束后触发该回调。

onDetached

Function

自定义组件卸载

自定义组件卸载时,触发该回调,常用于停止动画或异步逻辑停止执行的场景。

onDestroy

Function

自定义组件销毁

自定义组件销毁时,触发该回调,常用于资源释放。

onShow

Function

自定义组件Page显示

自定义组件所在Page显示后,触发该回调。

onHide

Function

自定义组件Page隐藏

自定义组件所在Page隐藏后,触发该回调。

示例

<!-- comp.hml -->
<div class="item">  
   <text class="text-style">{{ value }}</text>  
</div>

//comp.js
export default {
  data: {
    value: "组件创建"
  },
  onInit() {
    console.log("组件创建")
  },
  onAttached() {
    this.value = "组件挂载",
    console.log("组件挂载")
  },
  onShow() {
    console.log("Page显示")
  },
  onHide() {
    console.log("Page隐藏")
  }
}

动态创建组件

更新时间: 2023-02-17 09:19


提供在页面中动态添加组件,并为动态添加的组件设置属性与样式的能力。


说明

  • 从API version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

createElement

createElement(tag: string): Element

创建一个组件对象。

参数:

参数名

类型

必填

说明

tag

string

组件名称。

返回值:

类型

说明

Element

对应tag名称的组件对象。

let newImage = dom.createElement('image')

setAttribute

setAttribute(name: string, value: string): void

动态设置组件的属性。

参数:

参数名

类型

必填

说明

name

string

属性名称。

value

string

属性值。

newImage.setAttribute('src', 'common/testImage.jpg')

setStyle

setStyle(name: string, value: string): boolean

动态设置组件的样式。

参数:

参数名

类型

必填

说明

name

string

样式名称。

value

string

样式值。

返回值:

类型

说明

boolean

设置成功时返回true,失败时返回false。

newImage.setStyle('width', '120px')

addChild

addChild(child: Element): void

将动态创建的组件添加到父组件当中。

参数:

参数名

类型

必填

说明

child

Element

组件对象。

newDiv.addChild(newImage)

示例

<!-- xxx.hml -->
<div class="container">
  <div id="parentDiv" class="parent"></div>
  <button onclick="appendDiv" class="btn">动态创建div</button>
  <button onclick="appendImage" class="btn">动态创建image到创建的div中</button>
</div>

/* xxx.css */
.container {
  flex-direction: column;
  align-items: center;
  width: 100%;
}

.parent {
  flex-direction: column;
}

.btn {
  width: 70%;
  height: 60px;
  margin: 15px;
}

// xxx.js
let newDiv = null
let newImage = null

export default {
  appendDiv() {
    let parent = this.$element('parentDiv')
    newDiv = dom.createElement('div')
    newDiv.setStyle('width', '150px')
    newDiv.setStyle('height', '150px')
    newDiv.setStyle('backgroundColor', '#AEEEEE')
    newDiv.setStyle('marginTop', '15px')
    parent.addChild(newDiv)
  },
  appendImage() {
    newImage = dom.createElement('image')
    newImage.setAttribute('src', 'common/testImage.jpg')
    newImage.setStyle('width', '120px')
    newImage.setStyle('height', '120px')
    newDiv.addChild(newImage)
  }
}

数据类型说明

更新时间: 2023-02-17 09:19

长度类型

名称

类型定义

描述

length

string | number

用于描述尺寸单位,输入为number类型时,使用px单位;输入为string类型时,需要显式指定像素单位,当前支持的像素单位有:

- px:逻辑尺寸单位。

- fp6+:字体尺寸单位,会随系统字体大小设置发生变化,仅支持文本类组件设置相应的字体大小。

percentage

string

百分比尺寸单位,如“50%”。

颜色类型

名称

类型定义

描述

color

string | 颜色枚举字符串

用于描述颜色信息,JS脚本中不支持颜色枚举格式。

字符串格式如下:

- 'rgb(255, 255, 255)'

- 'rgba(255, 255, 255, 1.0)'

- HEX格式:'#rrggbb','#aarrggbb'

- 枚举格式:'black','white'。

表1 当前支持的颜色枚举

枚举名称

对应颜色

颜色

aliceblue

#f0f8ff


HarmonyOS API:自定义组件-鸿蒙开发者社区


antiquewhite

#faebd7


HarmonyOS API:自定义组件-鸿蒙开发者社区


aqua

#00ffff


HarmonyOS API:自定义组件-鸿蒙开发者社区


aquamarine

#7fffd4


HarmonyOS API:自定义组件-鸿蒙开发者社区


azure

#f0ffff


HarmonyOS API:自定义组件-鸿蒙开发者社区


beige

#f5f5dc


HarmonyOS API:自定义组件-鸿蒙开发者社区


bisque

#ffe4c4


HarmonyOS API:自定义组件-鸿蒙开发者社区


black

#000000


HarmonyOS API:自定义组件-鸿蒙开发者社区


blanchedalmond

#ffebcd


HarmonyOS API:自定义组件-鸿蒙开发者社区


blue

#0000ff


HarmonyOS API:自定义组件-鸿蒙开发者社区


blueviolet

#8a2be2


HarmonyOS API:自定义组件-鸿蒙开发者社区


brown

#a52a2a


HarmonyOS API:自定义组件-鸿蒙开发者社区


burlywood

#deB887


HarmonyOS API:自定义组件-鸿蒙开发者社区


cadetblue

#5f9ea0


HarmonyOS API:自定义组件-鸿蒙开发者社区


chartreuse

#7fff00


HarmonyOS API:自定义组件-鸿蒙开发者社区


chocolate

#d2691e


HarmonyOS API:自定义组件-鸿蒙开发者社区


coral

#ff7f50


HarmonyOS API:自定义组件-鸿蒙开发者社区


cornflowerblue

#6495ed


HarmonyOS API:自定义组件-鸿蒙开发者社区


cornsilk

#fff8dc


HarmonyOS API:自定义组件-鸿蒙开发者社区


crimson

#dc143c


HarmonyOS API:自定义组件-鸿蒙开发者社区


cyan

#00ffff


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkblue

#00008b


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkcyan

#008b8b


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkgoldenrod

#b8860b


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkgray

#a9a9a9


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkgreen

#006400


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkgrey

#a9a9a9


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkkhaki

#bdb76b


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkmagenta

#8b008b


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkolivegreen

#556b2f


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkorange

#ff8c00


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkorchid

#9932cc


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkred

#8b0000


HarmonyOS API:自定义组件-鸿蒙开发者社区


darksalmon

#e9967a


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkseagreen

#8fbc8f


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkslateblue

#483d8b


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkslategray

#2f4f4f


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkslategrey

#2f4f4f


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkturquoise

#00ced1


HarmonyOS API:自定义组件-鸿蒙开发者社区


darkviolet

#9400d3


HarmonyOS API:自定义组件-鸿蒙开发者社区


deeppink

#ff1493


HarmonyOS API:自定义组件-鸿蒙开发者社区


deepskyblue

#00bfff


HarmonyOS API:自定义组件-鸿蒙开发者社区


dimgray

#696969


HarmonyOS API:自定义组件-鸿蒙开发者社区


dimgrey

#696969


HarmonyOS API:自定义组件-鸿蒙开发者社区


dodgerblue

#1e90ff


HarmonyOS API:自定义组件-鸿蒙开发者社区


firebrick

#b22222


HarmonyOS API:自定义组件-鸿蒙开发者社区


floralwhite

#fffaf0


HarmonyOS API:自定义组件-鸿蒙开发者社区


forestgreen

#228b22


HarmonyOS API:自定义组件-鸿蒙开发者社区


fuchsia

#ff00ff


HarmonyOS API:自定义组件-鸿蒙开发者社区


gainsboro

#dcdcdc


HarmonyOS API:自定义组件-鸿蒙开发者社区


ghostwhite

#f8f8ff


HarmonyOS API:自定义组件-鸿蒙开发者社区


gold

#ffd700


HarmonyOS API:自定义组件-鸿蒙开发者社区


goldenrod

#daa520


HarmonyOS API:自定义组件-鸿蒙开发者社区


gray

#808080


HarmonyOS API:自定义组件-鸿蒙开发者社区


green

#008000


HarmonyOS API:自定义组件-鸿蒙开发者社区


greenyellow

#adff2f


HarmonyOS API:自定义组件-鸿蒙开发者社区


grey

#808080


HarmonyOS API:自定义组件-鸿蒙开发者社区


honeydew

#f0fff0


HarmonyOS API:自定义组件-鸿蒙开发者社区


hotpink

#ff69b4


HarmonyOS API:自定义组件-鸿蒙开发者社区


indianred

#cd5c5c


HarmonyOS API:自定义组件-鸿蒙开发者社区


indigo

#4b0082


HarmonyOS API:自定义组件-鸿蒙开发者社区


ivory

#fffff0


HarmonyOS API:自定义组件-鸿蒙开发者社区


khaki

#f0e68c


HarmonyOS API:自定义组件-鸿蒙开发者社区


lavender

#e6e6fa


HarmonyOS API:自定义组件-鸿蒙开发者社区


lavenderblush

#fff0f5


HarmonyOS API:自定义组件-鸿蒙开发者社区


lawngreen

#7cfc00


HarmonyOS API:自定义组件-鸿蒙开发者社区


lemonchiffon

#fffacd


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightblue

#add8e6


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightcoral

#f08080


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightcyan

#e0ffff


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightgoldenrodyellow

#fafad2


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightgray

#d3d3d3


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightgreen

#90ee90


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightpink

#ffb6c1


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightsalmon

#ffa07a


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightseagreen

#20b2aa


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightskyblue

#87cefa


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightslategray

#778899


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightslategrey

#778899


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightsteelblue

#b0c4de


HarmonyOS API:自定义组件-鸿蒙开发者社区


lightyellow

#ffffe0


HarmonyOS API:自定义组件-鸿蒙开发者社区


lime

#00ff00


HarmonyOS API:自定义组件-鸿蒙开发者社区


limegreen

#32cd32


HarmonyOS API:自定义组件-鸿蒙开发者社区


linen

#faf0e6


HarmonyOS API:自定义组件-鸿蒙开发者社区


magenta

#ff00ff


HarmonyOS API:自定义组件-鸿蒙开发者社区


maroon

#800000


HarmonyOS API:自定义组件-鸿蒙开发者社区


mediumaquamarine

#66cdaa


HarmonyOS API:自定义组件-鸿蒙开发者社区


mediumblue

#0000cd


HarmonyOS API:自定义组件-鸿蒙开发者社区


mediumorchid

#ba55d3


HarmonyOS API:自定义组件-鸿蒙开发者社区


mediumpurple

#9370db


HarmonyOS API:自定义组件-鸿蒙开发者社区


mediumseagreen

#3cb371


HarmonyOS API:自定义组件-鸿蒙开发者社区


mediumslateblue

#7b68ee


HarmonyOS API:自定义组件-鸿蒙开发者社区


mediumspringgreen

#00fa9a


HarmonyOS API:自定义组件-鸿蒙开发者社区


mediumturquoise

#48d1cc


HarmonyOS API:自定义组件-鸿蒙开发者社区


mediumvioletred

#c71585


HarmonyOS API:自定义组件-鸿蒙开发者社区


midnightblue

#191970


HarmonyOS API:自定义组件-鸿蒙开发者社区


mintcream

#f5fffa


HarmonyOS API:自定义组件-鸿蒙开发者社区


mistyrose

#ffe4e1


HarmonyOS API:自定义组件-鸿蒙开发者社区


moccasin

#ffe4b5


HarmonyOS API:自定义组件-鸿蒙开发者社区


navajowhite

#ffdead


HarmonyOS API:自定义组件-鸿蒙开发者社区


navy

#000080


HarmonyOS API:自定义组件-鸿蒙开发者社区


oldlace

#fdf5e6


HarmonyOS API:自定义组件-鸿蒙开发者社区


olive

#808000


HarmonyOS API:自定义组件-鸿蒙开发者社区


olivedrab

#6b8e23


HarmonyOS API:自定义组件-鸿蒙开发者社区


orange

#ffa500


HarmonyOS API:自定义组件-鸿蒙开发者社区


orangered

#ff4500


HarmonyOS API:自定义组件-鸿蒙开发者社区


orchid

#da70d6


HarmonyOS API:自定义组件-鸿蒙开发者社区


palegoldenrod

#eee8aa


HarmonyOS API:自定义组件-鸿蒙开发者社区


palegreen

#98fb98


HarmonyOS API:自定义组件-鸿蒙开发者社区


paleturquoise

#afeeee


HarmonyOS API:自定义组件-鸿蒙开发者社区


palevioletred

#db7093


HarmonyOS API:自定义组件-鸿蒙开发者社区


papayawhip

#ffefd5


HarmonyOS API:自定义组件-鸿蒙开发者社区


peachpuff

#ffdab9


HarmonyOS API:自定义组件-鸿蒙开发者社区


peru

#cd853f


HarmonyOS API:自定义组件-鸿蒙开发者社区


pink

#ffc0cb


HarmonyOS API:自定义组件-鸿蒙开发者社区


plum

#dda0dd


HarmonyOS API:自定义组件-鸿蒙开发者社区


powderblue

#b0e0e6


HarmonyOS API:自定义组件-鸿蒙开发者社区


purple

#800080


HarmonyOS API:自定义组件-鸿蒙开发者社区


rebeccapurple

#663399


HarmonyOS API:自定义组件-鸿蒙开发者社区


red

#ff0000


HarmonyOS API:自定义组件-鸿蒙开发者社区


rosybrown

#bc8f8f


HarmonyOS API:自定义组件-鸿蒙开发者社区


royalblue

#4169e1


HarmonyOS API:自定义组件-鸿蒙开发者社区


saddlebrown

#8b4513


HarmonyOS API:自定义组件-鸿蒙开发者社区


salmon

#fa8072


HarmonyOS API:自定义组件-鸿蒙开发者社区


sandybrown

#f4a460


HarmonyOS API:自定义组件-鸿蒙开发者社区


seagreen

#2e8b57


HarmonyOS API:自定义组件-鸿蒙开发者社区


seashell

#fff5ee


HarmonyOS API:自定义组件-鸿蒙开发者社区


sienna

#a0522d


HarmonyOS API:自定义组件-鸿蒙开发者社区


silver

#c0c0c0


HarmonyOS API:自定义组件-鸿蒙开发者社区


skyblue

#87ceeb


HarmonyOS API:自定义组件-鸿蒙开发者社区


slateblue

#6a5acd


HarmonyOS API:自定义组件-鸿蒙开发者社区


slategray

#708090


HarmonyOS API:自定义组件-鸿蒙开发者社区


slategrey

#708090


HarmonyOS API:自定义组件-鸿蒙开发者社区


snow

#fffafa


HarmonyOS API:自定义组件-鸿蒙开发者社区


springgreen

#00ff7f


HarmonyOS API:自定义组件-鸿蒙开发者社区


steelblue

#4682b4


HarmonyOS API:自定义组件-鸿蒙开发者社区


tan

#d2b48c


HarmonyOS API:自定义组件-鸿蒙开发者社区


teal

#008080


HarmonyOS API:自定义组件-鸿蒙开发者社区


thistle

#d8Bfd8


HarmonyOS API:自定义组件-鸿蒙开发者社区


tomato

#ff6347


HarmonyOS API:自定义组件-鸿蒙开发者社区


turquoise

#40e0d0


HarmonyOS API:自定义组件-鸿蒙开发者社区


violet

#ee82ee


HarmonyOS API:自定义组件-鸿蒙开发者社区


wheat

#f5deb3


HarmonyOS API:自定义组件-鸿蒙开发者社区


white

#ffffff


HarmonyOS API:自定义组件-鸿蒙开发者社区


whitesmoke

#f5f5f5


HarmonyOS API:自定义组件-鸿蒙开发者社区


yellow

#ffff00


HarmonyOS API:自定义组件-鸿蒙开发者社区


yellowgreen

#9acd32


HarmonyOS API:自定义组件-鸿蒙开发者社区



文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-appendix-types-0000001478341245-V3?catalogVersion=V3​

已于2023-3-30 19:53:47修改
收藏
回复
举报
回复
    相关推荐