Compose中的副作用

1.LaunchedEffect

LaunchedEffect 是 Jetpack Compose 中的一个函数,用于在协程中执行副作用操作。副作用操作通常包括异步任务、网络请求、数据库操作或其他可能会阻塞主线程的操作。

LaunchedEffect 函数是一个协程构建器,它接受一个或多个参数,并在代码块中执行异步操作。它会自动在适当的时间启动和取消协程,确保在 Compose 组件的生命周期内正确处理副作用。当组件被创建时,LaunchedEffect 会启动协程,当组件被销毁时,它会自动取消协程。

LaunchedEffect 的参数可以是任何对象,用于标识不同的副作用操作。通常使用简单的数据类对象作为参数,例如 key1 = Unit。

在 LaunchedEffect 的代码块中,你可以执行各种需要在后台进行的操作,例如网络请求、数据库访问、文件读写等。由于这些操作是在协程中执行的,因此它们不会阻塞主线程,确保应用保持响应性。

需要注意的是,LaunchedEffect 函数只能在 Compose 函数内部调用,例如在 @Composable 注解的函数内部使用。如果你尝试在非 Compose 函数中调用它,将会出现编译错误。

总结起来,LaunchedEffect 是一个用于在协程中执行副作用操作的函数,它确保在 Compose 组件的生命周期内正确处理副作用。它是 Jetpack Compose 中处理异步任务和副作用的重要工具之一

itemData?. run {  
    LaunchedEffect (key1 = Unit) {  
        viewModel.getRelateVideoList (itemData. id)  
        viewModel.saveVideo (itemData)  
    }  
}

2.DisposableEffect

用于在组件创建和销毁时执行一些副作用操作。当组件被销毁时,onDispose 代码块内的操作会被执行

val coroutineScope = rememberCoroutineScope ()

DisposableEffect (Unit) {  
    val timer = Timer ()  
    timer.schedule (object : TimerTask () {  
        override fun run () {  
            coroutineScope. launch {  
                pagerState.animateScrollToPage (pagerState. currentPage + 1)  
            }  
        }  
    }, 3000, 3000)  
    onDispose {  
        timer.cancel ()  
    }  
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容