鸿蒙:ArkTS语言的子组件正确使用与传参方式(学习笔记版)

💎 为什么要使用子组件?

场景一: 存在一个 2000 行左右的xxx.ets文件,并有 10 处重复使用 50 行相同逻辑的代码,此时需要给这一块逻辑增加 / 修改日志输出的格式。

场景二: 项目开发时,已在其中一个页面实现定制化的弹窗提示,但是在之后的新需求中,需要在新页面中再次使用相同的弹窗提示。

两个开发场景中,都需要重复使用相同代码逻辑,因此就需要将公共的、可重用的代码块进行封装,作为一个子组件来使用。

💎 如何自定义子组件?

子组件必须的组成要素:
(1)@Component 装饰器
(2)struct 关键字
(3)build() 函数

@Component
struct ChildComponent {
   
	...
	
	build() {
   
		...
	}
}

补充说明: 若子组件单独定义在一个文件中时,需要使用export导出子组件。

💎 如何使用子组件?

子组件定义的位置不同,引入的方式存在区别。
例:子组件为 ChildComponent

💰 1、子组件与父组件定义在同一个文件

@Entry
@Component
struct ParentComponent {
   
	build() {
   
		// 直接使用子组件
		ChildComponent()
	}
}

💰 2、子组件与父组件定义在不同文件

//引入子组件
import {
   ChildComponent} from './ChildComponent'

@Entry
@Component
struct ParentComponent {
   
	build() {
   
		// 先引入再使用子组件
		ChildComponent()
	}
}

💎 父组件给子组件传参

这里仅介绍@Prop、@Provide / @Consume两种简单方式。@Link、@Observed / @ObjectLink同样可以进行传参,之后需要单独说明这几种方式的区别。

💰 @Prop

在子组件中声明变量,该变量允许不用初始化。当@Prop装饰的变量没有初始化时,父组件需要提供数据源进行初始化;若@Prop装饰的变量初始化时,父组件非必需提供数据源。

@Component
struct ChildComponent {
   
	@Prop name: string
	
	build() {
   }
}

@Entry
@Component
struct ParentComponent {
   
	@State ParentName: string = "LiHua"
	build() {
   
		ChildComponent({
    name: this.ParentName })
	}
}

💰 @Provide / @Consume

与@Prop不同的是,@Provide / @Consume支持更多层级组件之间传递参数,支持子孙组件直接接受到祖先组件的参数,解决父组件参数需要在子组件之间依次传递参数的问题;

@Component
struct ChildSonComponent {
   
	@Consume name: string
	
	build() {
   }
}

@Component
struct ChildComponent {
   	
	build() {
   
		ChildSonComponent()
	}
}

@Entry
@Component
struct ParentComponent {
   
	@Provide ParentName: string = "LiHua"
	build() {
   
		ChildComponent()
	}
}

相关推荐

  1. 组件向父组件方式

    2023-12-29 18:24:04       20 阅读
  2. vue实现父组件组件

    2023-12-29 18:24:04       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-29 18:24:04       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-29 18:24:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-29 18:24:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-29 18:24:04       20 阅读

热门阅读

  1. VS权限到期后咋办? — Visual Studio Product Keys

    2023-12-29 18:24:04       34 阅读
  2. Pthon Request库源码解读之__init__.py

    2023-12-29 18:24:04       31 阅读
  3. 华为鸿蒙应用--Toast工具(鸿蒙工具)-ArkTs

    2023-12-29 18:24:04       40 阅读
  4. 7天玩转 Golang 标准库之 os

    2023-12-29 18:24:04       41 阅读
  5. COMM394 Coding Literacy for Managers

    2023-12-29 18:24:04       41 阅读
  6. 算法系统学习(持续更新)

    2023-12-29 18:24:04       38 阅读
  7. 深入理解Dockerfile —— 筑梦之路

    2023-12-29 18:24:04       35 阅读
  8. GPT翻译水平探究:人工智能的语言艺术

    2023-12-29 18:24:04       38 阅读
  9. 23种设计模式学习

    2023-12-29 18:24:04       35 阅读