Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
318 of 502 menu
◀ ▶

Функция remember

Функция remember вычисляет значение один раз и сохраняет его, пока composable остаётся в дереве с тем же ключом. При следующей перерисовке лямбда не вызывается снова, если ключи не сменились. Часто внутри создают mutableStateOf или тяжёлый объект.

Синтаксис

val value = remember { mutableStateOf("abcde") }

Параметры

Параметр Описание
keys Необязательные ключи. Если любой ключ сменился, значение пересчитают заново.
calculation Лямбда, которая создаёт запоминаемое значение.

Пример

Давайте запомним счётчик нажатий:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var count by remember { mutableIntStateOf(0) } Button(onClick = { count++ }) { Text(text = "abcde") } Text(text = if (count == 0) "abcde" else "12345") } } }

На экране текст сменится на "12345" после первого нажатия и останется при перерисовке.

Пример

Давайте сбросим счётчик при смене ключа:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var key by remember { mutableIntStateOf(0) } var count by remember(key) { mutableIntStateOf(0) } Button(onClick = { count++ }) { Text(text = "abcde") } Button(onClick = { key++ }) { Text(text = "12345") } Text(text = if (count == 0) "abcde" else "12345") } } }

На экране вторая кнопка обнулит счётчик, потому что remember пересчитает значение.

Смотрите также

  • функция mutableStateOf,
    которой создают изменяемое состояние
  • функция rememberSaveable,
    которая переживает поворот экрана
  • функция derivedStateOf,
    которая считает производное значение
  • класс MutableState,
    который возвращает mutableStateOf
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить