android compose组件中useEffect对应的是什么

问题描述 投票:0回答:2

我有一个使用 kotlin 和 jetpack 组成组件的 Android 主从应用程序。 应用程序中的流程应该是:

  1. 打开应用程序
  2. 应用程序在主视图中启动,其中包含使用视图模型从 api 检索的所有项目的列表。
  3. 单击某个项目时,我们导航到详细信息屏幕,该屏幕应该仅调用一次 findItem(id) 函数,该函数在屏幕的视图模型中实现。

问题是我不知道如何仅在第一次从视图模型渲染函数时调用。 现在,有一个无限循环,其中调用 find 函数,因为我将视图模型提供的项目存储在 observableState 中。每次发生变化时,都会重新渲染组件并再次调用 find 函数。 怎么才能只调用一次呢?

android kotlin state viewmodel android-jetpack-compose
2个回答
3
投票
LaunchedEffect(Unit) {
    // this will run once per composition 
}

0
投票

您可以从屏幕viewModel内的savedStateHandle获取id,并从viewModel的

init
块中调用fetch。这将在第一个合成页面上调用一次。

© www.soinside.com 2019 - 2024. All rights reserved.