Jetpack 撰写类型安全的导航 - 导航用法

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

我仍在学习 Jetpack Compose,现在尝试从基于字符串的路线导航迁移到遵循这篇文章的新 API。

在我使用类似的东西之前:


@Composable
fun HomeScreen(
   ...
   navHostController: NavHostController
   ...
) {
...
   if (state.logoutRequired) {
       navController.navigate(Screen.Auth)
    }
...
}

在我的屏幕可组合项中。现在,它会导致导航时跳帧和视觉故障。我通过使用 LaunchedEffect 解决了这个问题,但仍然没有弄清楚为什么它会这样工作。

那么为什么我可以从其他回调函数的 LaunchedEffectonClickonDismiss 进行导航,而不能从可组合函数体进行导航?

android android-jetpack-compose android-jetpack android-jetpack-navigation composable
1个回答
0
投票

您描述的问题与导航库无关。它与Compose和重组有关。

如果您经常更新状态:

可组合函数可能会每帧重新执行一次, 例如渲染动画时。

因此,如果您在

Composable
内部编写代码,每次发生重组时它都会执行。

您可以从官方文档中阅读有关重组的更多信息: https://developer.android.com/develop/ui/compose/mental-model#recomposition

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.