首页 > 解决方案 > 在jetpack compose中使用不是顶级乐趣的反模式吗?

问题描述

我是jetpack compose的初学者。在 codelabs 之后,我发现他们只使用顶级函数教我。我可以在Activity中使用可组合功能,但是我找不到使用这种方式的人。我想知道哪个是最佳实践。

我的代码

class RecyclerViewActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyApp {
                Test()
            }
        }
    }

    @Composable
    fun MyApp(content: @Composable () -> Unit) {
        ComposeDemoTheme {
            content()
        }

    }
    @Composable
    fun Test() {
    
    }
}

代码实验室

class RecyclerViewActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyApp {
                Test()
            }
        }
    }


}
    @Composable
    fun MyApp(content: @Composable () -> Unit) {
        ComposeDemoTheme {
            content()
        }

    }
    @Composable
    fun Test() {
    
    }

标签: androidandroid-jetpack-compose

解决方案


您希望按屏幕/视图拆分代码,并且每个屏幕/视图都放在它自己的文件中

通常你不想在你身上有任何可组合的东西Activity。您可以在内部设置主题和其他上下文变量,setContent或者MyApp如果您有太多逻辑将其移动到,但在这种情况下,我会留下您将这个可组合的移动MyApp.kt

我通常做这样的结构:

  • 屏幕名称:包
    • 屏幕.kt
    • ScreenRow.kt:如果屏幕有一个列表
    • ButtomBar.kt:如果屏幕有按钮栏并且代码不平凡
    • ...

因此,通常当您看到您的文件包含太多可组合项时,您会将逻辑上独立的部分移动到其他文件中


推荐阅读