Управление состоянием с @Model Jetpack Compose не работает - PullRequest
0 голосов
/ 24 января 2020

У меня есть кнопка создания, которая имеет состояние @Model.

@Model
class CounterState(var count: Int = 0)

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        MyApp {
            Counter(CounterState())
        }
    }
  }
}

@Composable
fun Counter(state: CounterState) {
Button(
    text = "I've been clicked ${state.count} times",
    onClick = {
        state.count++
    },
    style = ContainedButtonStyle(color = if (state.count > 5) Color.Green else Color.White)
  )
}

когда я нажимаю кнопку, текст не обновляется.

Кто-нибудь знает почему?

1 Ответ

0 голосов
/ 27 января 2020

В этой строке

Counter(CounterState())

вы создаете новый CounterState каждый раз, который сбрасывает его в ноль каждый раз, когда он перекомпонован. Вы должны создать его один раз за пределами композиции, а затем сохранить его в переменной, чтобы каждый раз передавать в Counter.

...