首页 > 其他分享 >学习笔记(六):参数传递规则

学习笔记(六):参数传递规则

时间:2024-10-27 10:42:00浏览次数:2  
标签:传递 自定义 Builder 笔记 参数传递 参数 规则 UI message

规则:

  • 参数的类型必须与参数声明的类型一致,不允许undefined、null和返回undefined、null的表达式。
  • 在自定义构建函数内部,不允许改变参数值。如果需要改变参数值,且同步回调用点,建议使用@Link
  • @Builder内UI语法遵循UI语法规则
  • 只有传入一个参数,且参数需要直接传入对象字面量才会按引用传递该参数,其余传递方式均为按值传递。

一、按引用传递参数

按引用传递参数时,传递的参数可为状态变量,且状态变量的改变会引起@Builder方法内的UI刷新。ArkUI提供$$作为按引用传递参数的范式。

如下示例,传递参数 message给自定义构建函数,使用按引用传递方式,当点击button改变message值的时候,会导致@Builder方法内的UI刷新

// 参数传递规则示例
@Entry
@Component
struct ParmsTest {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column(){
     // 使用自定义构建函数,传入值message myComponentView({showContent: this.message}) Button('点击修改内容') .fontSize(30) .type(ButtonType.Capsule) .onClick(()=>{ this.message = '内容变化' }) } } .height('100%') } } // 定义一个全局自定义构建函数 // 使用按引用传值方式 @Builder function myComponentView($$: { showContent: string }){ Row(){ Text($$.showContent) .fontSize(20) .fontColor(Color.Red) } }

 

二、按值传递参数

调用@Builder装饰的函数默认按值传递。当传递的参数为状态变量时,状态变量的改变不会引起@Builder方法内的UI刷新。所以当使用状态变量的时候,推荐使用按引用传递

如下示例,传递参数 message给自定义构建函数,使用按值传递方式,当点击button改变message值的时候,并不会导致@Builder方法内的UI刷新

// 参数传递规则示例
@Entry
@Component
struct ParmsTest {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column(){
        otherComponent(this.message,'按值传递参数')
        Button('点击修改内容')
          .fontSize(30)
          .type(ButtonType.Capsule)
          .onClick(()=>{
            this.message = '内容变化'
          })
      }
    }
    .height('100%')
  }
}

// 定义一个全局自定义构建构建函数
// 使用按值传递参数方式
@Builder function otherComponent(showContent:string,typeContent:string){
  Column(){
    Text(showContent)
      .fontSize(30)
      .fontColor(Color.Blue)
    Text('传递方式:'+typeContent)
    .fontSize(30)
      .fontColor(Color.Blue)
  }
}

 

标签:传递,自定义,Builder,笔记,参数传递,参数,规则,UI,message
From: https://www.cnblogs.com/xqxacm/p/18508033

相关文章

  • 苹果笔记本和其他品牌笔记本在设计上有哪些不同
    本文对比分析了苹果笔记本与其他品牌笔记本在设计上的主要差异。主要内容包括:1.外观设计风格不同;2.材料和构建质量不同;3.操作系统和用户界面的设计不同;4.硬件配置和性能不同;5.创新技术的应用不同;6.环保和可持续性设计不同;7.价格和市场定位不同。通过这些方面的深入分析,本文旨在为......
  • 系统架构设计师教程 第2章 2.6 计算机语言 笔记
    2.6计算机语言★★★★☆2.6.1计算机语言的组成计算机语言(ComputerLanguage)是指用于人与计算机之间交流的一种语言,是人与计算机之间传递信息的媒介。计算机语言主要由一套指令组成,指令一般包括表达式、流程控制和集合三大部分内容。表达式又包含变量、常量、字面......
  • [rCore学习笔记 031] SV39多级页表的硬件机制
    看到这个题目就知道上一节提到的RISC-V手册的10.6节又有用武之地了.这里只需注意,RV32的分页方案Sv32支持4GiB的虚址空间,RV64支持多种分页方案,但我们只介绍最受欢迎的一种,Sv39。:RISC-V的分页方案以SvX的模式命名,其中X是以位为单位的虚拟地址的长度。虚拟地址和物理地址......
  • 一个可以调节笔记本亮度的程序
    在我这台笔记本上,当我把显示模式调为读显时发现右下角的亮度不能调了,就像这样 听说时nvidia显卡不适配的问题咱也不知道呀于是我就用java写了程序来调节,用了俩个多月,没啥问题的打开就是这样拉动直接就可以调节源码importjavax.swing.*;importjavax.swing.event.Cha......
  • 算法笔记:Day-04(二维前缀和)
    二维数组及滚动数组304.二维区域和检索-矩阵不可变classNumMatrix{privatefinalint[][]sum;publicNumMatrix(int[][]matrix){intm=matrix.length;intn=matrix[0].length;sum=newint[m+1][n+1];for(in......
  • 学习笔记(五):自定义构建函数
    若自定义的组件内部UI结构固定,且仅与使用方进行数据传递。则无需单独写一个自定义组件文件,可直接在使用方内进行定义。即UI元素复用机制@Builder,@Builder所装饰的函数遵循build()函数语法规则,开发者可以将重复使用的UI元素抽象成一个方法,在build方法里调用。定义一个自定义构建......
  • 尚硅谷-react教程-求和案例-数据共享(下篇)-完成数据共享-笔记
    #1024程序员节|征文# public/index.html<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>redux</title></head><body><divid="root"><......
  • Mit6.S081笔记Lab3: page tables 页表
    课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/pgtbl.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/pgtbl相关翻译:http://xv6.dgs.zone/labs/requirements/lab3.html参考博客:https://ww......
  • Git学习笔记 - 设置Git
    用户设置设置用户的用户名及E-mail,在终端中设置:gitconfig--globaluser.name"username"gitconfig--globaluser.email"[email protected]"设置完成可以通过gitconfig--list进行检查。其中的--global表示进行的全局设置。也可以修改文件进行设置,文件为.gitconfig。文......
  • 一维离散化笔记
    一维离散化笔记通俗来说,一维离散化就是把在无限空间中的有限元素映射到一个线性排列的区间中举个实际的例子说明:存在一个近似无限的空间\([-10^9,10^9]\),我们需要对其中\(10^5\)个离散的元素进行操作显然不可能对这个近似无限的区间进行\(10^5\)次遍历所以需要把这\(10^5\)......