Эффект с постоянным ключом при смене идентификатора
Экран профиля используется и для своего профиля, и для чужих. Загрузка запускается так:
@Composable
fun ProfileScreen(userId: String, viewModel: ProfileViewModel) {
LaunchedEffect(Unit) {
viewModel.load(userId)
}
ProfileContent(viewModel.state.collectAsState().value)
}
Пользователь из профиля переходит к профилю друга, при этом сам composable остаётся на экране, меняется только userId. Что он увидит?
- Данные перезагрузятся: эффект перезапускается при каждой перерисовке экрана с новыми аргументами
- Приложение упадёт: менять идентификатор, пока эффект с прежним значением ещё выполняется, нельзя
- Эффект выполнится дважды, и данные двух разных профилей перемешаются в одном состоянии
- Данные останутся от первого профиля: ключ эффекта не менялся, поэтому перезапуска не было
