Side Effects: LaunchedEffect
Penjelasan
LaunchedEffect(key) { } menjalankan coroutine SEKALI saat Composable pertama muncul, dan DIULANG kalau key-nya berubah — key = Unit atau key = true berarti cuma sekali selamanya (setara dependency array kosong [] di useEffect React). Dipakai untuk side effect asynchronous seperti fetch data awal.
Contoh Konsep
@Composable
fun DaftarProduk(viewModel: ProdukViewModel = viewModel()) {
val produk by viewModel.produk.collectAsState()
LaunchedEffect(Unit) {
viewModel.ambilProduk() // cuma dijalankan sekali
}
LazyColumn {
items(produk) { item -> Text(item.nama) }
}
}
Praktikum
Buat Composable dengan LaunchedEffect(Unit) yang mencetak "Composable dimuat" lewat println(), dijalankan HANYA SEKALI saat Composable pertama muncul.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
LaunchedEffect(Unit) HANYA aman dipakai kalau memang benar-benar ingin efeknya jalan SEKALI selama Composable itu ada di composition — kalau efeknya perlu jalan ULANG saat data tertentu berubah, isi key dengan variabel data itu (mis. LaunchedEffect(idProduk)), mirip mengisi dependency array useEffect React dengan variabel yang relevan.