鸿蒙插槽?全局插槽和局部插槽?数据不更新?

news/2025/2/7 0:45:55/

@Builder的基本语法数据是不会响应式的

第一种:
全局插槽:传入的变量是@state数据(数据是对象也一样),但是button点击更改,并没有任何反应。规则就是不更新

@Entry
@Component
struct Demo02 {@State message: string = 'Hello World'build() {Row() {Column() {show(this.message)Button('点击').onClick((event: ClickEvent) => {this.message = "666"})}.width('100%')}.height('100%')}
}
//全局插槽
@Builder
function show(content:string){Row(){Text(content)}
}

第二种:局部插槽:传入的变量是@state数据(数据是对象也一样),但是button点击更改,并没有任何反应。规则就是不更新

@Entry
@Component
struct Demo03 {@State message: string = 'Hello World'@Buildershow(content:string){Row(){Text(content)}}build() {Row() {Column() {this.show(this.message)Button("点击").onClick((event: ClickEvent) => {this.message = "666"})}.width('100%')}.height('100%')}
}

@Builder的新语法数据可以响应式

写法需要注意:
1、传入的需要时对象,$$是官方提供的语法糖,只是一个代号
2、 this.show({name:this.msg.name}) 这个写法是最重要的,传入的必须写成展开对象,并且属性值是变量。直接传this.msg做不到响应式(这是个大坑

@Entry
@Component
struct Demo03 {@State message: string = 'Hello World'@State msg:A = {name:'zhangsan'}@Buildershow($$:A){Row(){Text($$.name)}}build() {Row() {Column() {this.show({name:this.msg.name})Button("点击").onClick((event: ClickEvent) => {this.msg.name = "lisi"})}.width('100%')}.height('100%')}
}class A {name:string = ''
}

鸿蒙-传智播客-博学谷


http://www.ppmy.cn/news/1281714.html

相关文章

手机上的软件怎么修改网络IP地址

在手机上修改网络IP地址通常需要通过以下两种方法: 1. 使用VPN(虚拟私人网络)或代理软件: 步骤如下: - 下载并安装一个可靠的VPN或代理软件到你的手机上。 - 打开VPN或代理软件,选择一个你希望获取IP地址…

linux C 设置redis操作超时

linux系统C语言通过hiredis库来连接操作redis,可以通过redisSetTimeout来设置操作的超时时间。 int redisSetTimeout(redisContext *c, const struct timeval tv); 对于建立redis连接的超时需要通过redisConnectWithTimeout来连接redis。 redisContext *redisCon…

Vue3组合式-依赖注入provideinject

一、注意点 专门强调了是3.0且是组合式,不是2.0不支持也不是选项式不支持provide&&inject,是支持但是有很明显的弊端,不建议使用 二、场景 官方的解释: 通常情况下,当我们需要从父组件向子组件传递数据时,会…

uniapp创建/运行/发布项目

1、产生背景----跨平台应用框架 在移动端各大App盛行的时代,App之间的竞争也更加激烈,他们执着于让一个应用可以做多个事情 所以就应运而生了小程序,微信小程序、支付宝小程序、抖音小程序等等基于App本身的内嵌类程序。 但是各大App他不可…

Android UID相关知识

一、UID/PID/GID/GIDS的含义和作用 UID : android中uid用于标识一个应用程序,uid在应用安装时被分配,并且在应用存在于手机上期间,都不会改变。一个应用程序只能有一个uid,多个应用可以使用sharedUserId 方式共享同一个uid&#…

关于Python里xlwings库对Excel表格的操作(十八)

这篇小笔记主要记录如何【设置单元格数据的对齐方式】。前面的小笔记已整理成目录,可点链接去目录寻找所需更方便。 【目录部分内容如下】【点击此处可进入目录】 (1)如何安装导入xlwings库; (2)如何在Wps下…

C# WPF上位机开发(MySql访问)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们学习了数据库sqlite,不过这是一种小型的数据库,作为内部使用还可以。但是,如果要与外面的其他供应商进…

lvgl 双物理显示器的驱动实现

目录 一、背景 1. 要实现的功能2. lvgl 版本 二、简单粗暴的方式 理论上可以这样实现缺陷: 三、lvgl 自身机制支持 3.1 实现思路3.2 初始化缓冲区和注册显示驱动 3.2.1 复制lv_port_disp → lv_port_disp_23.2.2 修改 lv_port_disp_2 文件3.2.3 在应用层调用显示器…