Study
Jetpack Compose

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.

Editor Latihan

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.