Compose là UI khai báo: bạn viết các hàm @Composable nhận dữ liệu (state) và phát ra UI tương ứng. Khi state đọc bên trong đổi, Compose chạy lại các composable liên quan để cập nhật UI — đó là recomposition.
Điểm quan trọng:
- Compose chỉ recompose phần đọc state đã đổi, bỏ qua phần khác (smart recomposition).
- Composable phải idempotent và không side-effect vì có thể chạy lại nhiều lần, theo thứ tự bất kỳ, thậm chí song song hoặc bị bỏ qua.
- Việc nặng/side-effect phải đặt trong LaunchedEffect, remember, coroutine — không đặt thẳng trong thân composable.
Hay hỏi: nguyên nhân recompose thừa và cách dùng key, remember, kiểu ổn định (stable) để tránh.