当前位置: 首页 > news >正文

Compose (14/N) - 附带效应 EffectPI

一、概念

纯函数函数与外界交换数据只能通过形参和返回值进行,不会对外界环境产生影响。
副作用函数内部与外界进行了交互,产生了其它结果(如修改外部变量)。组合函数是用来声明UI的,所以跟UI描述不相关的操作都是副作用。
组合函数的特点执行顺序不定、可以并行执行、可能非常频繁的重组、可以跳过重组。
组合函数需要处理的副作用

执行时机要明确:例如挂载时、重组时。

执行次数要可控:是否应该随着重组反复执行。

不会造成泄漏:移除时释放资源。

Compose生命周期:

某个组合被多个地方使用,会生成多个实例,有各自的生命周期。

Enter挂载到树上首次显示。
Composition重组刷新UI(执行0/N次)。
Leave从树上移除不再显示。

API:

LaunchedEffect第一次执行组合函数时调用、DisposableEffect内部有一个onDespose()函数当页面退出时调用、SideEffect每次重组都会调用。

二、Effect API

组合函数应该是无副作用的,如果要在组合函数中产生附带效应需要使用EffectAPI。

2.1 LaunchedEffect

也是一个组合函数,但是不产生UI。副作用往往都是耗时操作,提供协程作用域以便在组合函数中做耗时操作(动画也是耗时操作)。 

组合函数生命周期LaunchedEffect
挂载启动一个协程并执行block。
重组key改变时,之前未执行完会被取消,然后再次执行block。
key不变时,不会重新执行block。
移除协程未执行完会被取消。(动画会被打断)

fun LaunchedEffect(
    key1: Any?,        //key值改变就会执行block(默认挂载时就会执行一次)
    block: suspend CoroutineScope.() -> Unit
)

val state = remember { mutableStateOf(false) }
LaunchedEffect(state) {//...耗时操作或动画
}

2.2 rememberCoroutineScope

用于在组合外启动协程(LaunchedEffect是组合函数只能在其它组合中调用)。

相关文章:

Compose (14/N) - 附带效应 EffectPI

一、概念 纯函数函数与外界交换数据只能通过形参和返回值进行,不会对外界环境产生影响。副作用函数内部与外界进行了交互,产生了其它结果(如修改外部变量)。组合函数是用来声明UI的,所以跟UI描述不相关的操作都是副作…...

云日记个人中心项目思路

验证昵称的唯一性 前台: 昵称文本框的失焦事件 blur 1. 获取昵称文本框的值 2. 判断值是否为空 如果为空,提示用户,禁用按钮,并return 3. 判断昵称是否做了修改…...

docker容器的相关环境及创建镜像1

一、容器管理工具介绍 LXC 2008 是第一套完整的容器管理解决方案 不需要任何补丁直接运行在linux内核之上管理容器。创建容器慢,不方便移植 Docker 是在LXC基础上发展起来的。拥有一套容器管理生态系统 生态系统包含︰容器镜像、注册表、RESTFUL API及命令行操作界…...

如何使用ChatGPT在1天内完成毕业论文

如何使用ChatGPT在1天内完成毕业论文 几天前,亲眼见证了到一位同学花了1天时间用ChatGPT完成了他的毕业论文,世道要变,要学会使用黑科技才能混的下去。废话到此结束,下面说明这么用AI生成自己的论文。 使用工具: 1. P…...

Debezium同步之实时数据采集必备工具

目录 简介 基础架构图片 Kafka Connect Debezium 特性 抽取原理 简介 RedHat(红帽公司) 开源的 Debezium 是一个将多种数据源实时变更数据捕获,形成数据流输出的开源工具。 它是一种 CDC(Change Data Capture)工具,工作原理类似大家所熟知的 Canal, DataBus, Maxwell…...

【区块链】走进web3的世界-gas费用

气体单位用于衡量在以太坊上执行交易所需的计算量。由于每笔交易都需要一些计算资源来执行,因此需要一笔费用,通常称为Gas fee或Transaction fee 。 汽油费以以太坊的本地货币——ether或ETH支付。汽油费的计算方式在伦敦升级前后略有不同。 注意&#…...

世界上最大的手工艺品连锁零售商Michaels验厂总结

【世界上最大的手工艺品连锁零售商Michaels验厂总结】 Michaels是世界上最大的手工艺品连锁企业,公司的总部位于美国德克萨斯州的Irving,公司现在有员工12500人。在美国49个州和加拿大经营着1200多家Michaels工艺品的连锁店。每家商店平均销售面积约为18…...

springboot如何优雅的打印项目日志

文章目录如何优雅的打印项目日志原理实现日志打印Filter注入容器如何优雅的打印项目日志 框架 springboot 原理 使用filter拦截请求,打印出请求、响应,及耗时 知识点 1、OncePerRequestFilter Filter base class that aims to guarantee a single …...

【JAVA程序设计】(C00127)基于SSM+vue开发的音乐播放管理系统-有文档

基于SSMvue开发的音乐管理系统-有文档项目简介项目获取开发环境项目技术运行截图项目简介 基于ssm框架vue以及html前台的开发的音乐管理系统共分为二个角色:管理员、用户 管理员角色包含以下功能: 登录、个人中心(修改密码、个人信息修改&am…...

C#|调用C/C++动态库

参考:C#总结(四)调用C动态库(https://www.shuzhiduo.com/A/A2dmV49qze/) 文章目录C#加载C动态库C#加载C#动态库涉及到的概念知识:托管DLL和非托管DLL的区别(https://www.tinymind.net.cn/articl…...

让chatGPT当我的老师如何? 通过和chatGPT交互式学习,了解在ES中,一条JSON数据是如何写到磁盘上的

最近一直有一个问题,如鲠在喉。争取早一天解决,早一天踏踏实实的睡觉。 问题是:在ES中,一条JSON数据是如何写入到磁盘上的? 如何解决这个问题?我想到了chatGPT,还有lucene的学习资料。这篇文章&…...

chapter-7数据库事务

以下课程来源于MOOC学习—原课程请见:数据库原理与应用 考研复习 DBMS保证系统中一切事务的原子性、一致性、隔离性和持续性 DBMS必须对事务故障、系统故障和介质故障进行恢复 恢复中最经常使用的技术:数据库转储和登记日志文件 恢复的基本原理&#…...

阿里本地生活再出发:口碑入高德,备战美团、抖音

配图来自Canva可画 近日,有传言称高德地图将和阿里本地生活旗下的到店业务口碑正式合并,未来阿里旗下所有的本地生活到店业务都将统一整合在高德地图的入口中。3月22日,高德地图正式确认了此事,并表示高德地图作为“出门好生活开…...

SSM学习记录3:响应(注释方式 + SprigMVC项目 + 2022发布版本IDEA)

响应 ResponseBody注解的作用是将当前控制器中方法的返回值作为响应体 1.返回页面 无需在方法上进行ResponseBody注解,只需RequestMapping匹配地址,并且返回值为带后缀的页面名字符串 前面学习中除了json数据,所有带ResponseBody注解的方法…...

Linux·gcc 编译优化简介

1、gcc 编译优化简介 gcc 提供了为了满足用户不同程度的的优化需要,提供了近百种优化选项,用来对 { 编译时间,目标文件长度,执行效率 } 这个三维模型进行不同的取舍和平衡。优化的方法不一而足,总体上将有以下几类&…...

【电子学会】2022年12月图形化一级 -- 潜水

潜水 暑假小雨和爸爸去玩了潜水,他见到了各种各样的海洋生物。 1. 准备工作 (1)添加背景“Underwater 2”; (2)删除小猫角色,添加角色“Diver2”、“Fish”、“Jellyfish”、“Shark”; (3)为背景添加声音“Xylo2”。 2. 功能实现 (1)点击绿旗,播放背景音乐…...

MySQL日期时间函数汇总、时间格式转换方法

MySQL日期时间函数汇总、时间格式转换方法时间函数日期时间格式转换date_format函数EXTRACT()DATE_ADD()DATE_SUB()DATEDIFF函数时间函数 函数描述NOW()返回当前的日期和时间CURDATE()返回当前的日期CURTIME()返回当前的时间DATE()返回日期或日期/时间表达式的日期部分HOUR()获…...

【CSS】使用绝对定位 / 浮动解决外边距塌陷问题 ( 为父容器 / 子元素设置内边距 / 边框 | 为子元素设置浮动 | 为子元素设置绝对定位 )

文章目录一、外边距塌陷描述1、没有塌陷的情况2、外边距塌陷情况二、传统方法解决外边距塌陷 - 为父容器 / 子元素设置内边距 / 边框三、使用浮动解决外边距塌陷 - 为子元素设置浮动四、使用绝对定位解决外边距塌陷 - 为子元素设置绝对定位一、外边距塌陷描述 在 标准流的父盒子…...

前端手写综合考题

1 实现一个 // 使用 promise来实现 sleepconst sleep (time) > {return new Promise(resolve > setTimeout(resolve, time))}sleep(1000).then(() > {// 这里写你的骚操作}) sleep 函数,比如 sleep(1000) 意味着等待1000毫秒 2 给定两个数组&#xff0c…...

数据结构-排序

本节目标: 1.排序的概念及其运用 2.常见排序算法的实现 3.排序算法复杂度及稳定性分析 1.排序的概念及其应用 1.1排序的概念 排序就是按照某个我们设定的关键字,或者关键词,递增或者递减,完成这样的操作就是排序。 1.2排…...

从命令行到自动化:用xrandr和shell脚本打造你的Linux多屏工作流(含常见错误排查)

从命令行到自动化:用xrandr和shell脚本打造你的Linux多屏工作流(含常见错误排查) 每天早晨,当我从笔记本单屏切换到办公室的三显示器阵列时,只需按下CtrlAltW,所有显示器就会自动按预设排列亮起——这种流畅…...

告别轮询!用libhv的WebSocketClient类5分钟搞定C++实时通信客户端

告别轮询!用libhv的WebSocketClient类5分钟搞定C实时通信客户端 在物联网设备监控、多人在线游戏或金融行情推送等场景中,开发者常面临一个经典难题:如何实现毫秒级延迟的实时数据同步?传统HTTP轮询方案不仅浪费带宽,还…...

若依框架下SpringBoot Excel图片导出的实战与优化

1. 若依框架与Excel图片导出需求解析 第一次接触若依框架的Excel导出功能时,我发现它默认只支持文本和数字类型的数据导出。但在实际业务中,像商品详情导出、员工档案管理这类场景,经常需要将图片嵌入Excel表格。比如电商平台需要导出商品主图…...

别再傻傻分不清了!WPF里Shape和Geometry到底该用哪个?实战避坑指南

WPF图形渲染进阶:Shape与Geometry的深度抉择与性能优化实战 在WPF开发中,图形渲染是构建丰富用户界面的核心能力之一。当开发者需要绘制自定义图形时,通常会面临选择Shape还是Geometry的难题。这个看似简单的选择背后,实际上涉及到…...

大语言模型角色扮演:从提示工程到智能体框架的完整指南

1. 项目概述:当大语言模型学会“扮演”角色如果你最近在关注大语言模型(LLM)的应用,可能会发现一个有趣的现象:单纯让模型回答“11等于几”或者写一封邮件,已经越来越难以满足我们的好奇心和实际需求了。一…...

day15 C语言 指针3

13.字符指针的常见错误#include<stdio.h>#if 0int main(int argc, char **argv){//char *p"hello"; //error,会发生段错误 hello在内存中只有一份&#xff0c;只能读取不能修改char p[]"hello"; //char [] 开辟空间&#xff0c;会把hello复制一份给…...

开源监控工具Argus:轻量级实时监控与告警系统实践指南

1. 项目概述&#xff1a;一个专注于实时监控与告警的开源利器最近在梳理团队内部的监控告警体系时&#xff0c;我又重新审视了市面上的一些开源方案。除了大家耳熟能详的PrometheusGrafanaAlertmanager组合&#xff0c;一个名为argus的项目引起了我的注意。这个由tmdgusya维护的…...

BMP388/BMP390高精度气压传感器:从原理到Arduino/Python实战应用

1. 项目概述&#xff1a;高精度气压传感器的核心价值在嵌入式开发和物联网项目中&#xff0c;获取精确的环境数据往往是第一步。无论是无人机需要稳定的定高飞行&#xff0c;还是气象站要记录大气压力的细微变化&#xff0c;亦或是智能手表想要追踪你的楼层变化&#xff0c;都离…...

3分钟搞定京东自动抢购:Python工具终极完整指南

3分钟搞定京东自动抢购&#xff1a;Python工具终极完整指南 【免费下载链接】autobuy-jd 使用python语言的京东平台抢购脚本 项目地址: https://gitcode.com/gh_mirrors/au/autobuy-jd 还在为京东秒杀总是抢不到而烦恼吗&#xff1f;手动操作总是慢人一步&#xff0c;眼…...

Ironclad/Rivet:现代开发者的效率革命,从环境配置到工具链整合

1. 项目概述&#xff1a;从“铁甲”到“铆钉”&#xff0c;一个现代开发者的效率革命 如果你和我一样&#xff0c;常年混迹在代码仓库和命令行之间&#xff0c;那你一定对“工具链”这个词又爱又恨。爱的是&#xff0c;一套顺手的工具能让开发效率飞起&#xff1b;恨的是&#…...