Вступить в клуб →
средняявопросJetpack Compose и состояние экрана

Эффект с постоянным ключом при смене идентификатора

Экран профиля используется и для своего профиля, и для чужих. Загрузка запускается так:

@Composable
fun ProfileScreen(userId: String, viewModel: ProfileViewModel) {
    LaunchedEffect(Unit) {
        viewModel.load(userId)
    }
    ProfileContent(viewModel.state.collectAsState().value)
}

Пользователь из профиля переходит к профилю друга, при этом сам composable остаётся на экране, меняется только userId. Что он увидит?

  • Данные перезагрузятся: эффект перезапускается при каждой перерисовке экрана с новыми аргументами
  • Приложение упадёт: менять идентификатор, пока эффект с прежним значением ещё выполняется, нельзя
  • Эффект выполнится дважды, и данные двух разных профилей перемешаются в одном состоянии
  • Данные останутся от первого профиля: ключ эффекта не менялся, поэтому перезапуска не было

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела