在可点击修饰符中获取上下文的最佳方法
Best way to get Context in clickable modifier
我有一段文字,我想在点击时调用函数 X。我正在使用可点击修饰符并在 onClick 方法中调用函数 X 来执行此操作。但是,函数 X 使用 Context.
为了解决这个问题,我使用了下面概述的方法:
@Composable
fun ClickableText() {
val context = LocalContext.current
Text("Click me!", Modifier.clickable { functionX(context) })
}
我的问题是,这种方法有什么问题吗?它似乎工作正常,但存储对 LocalContext.current 的本地引用似乎有点老套。如果 Context 在 UI 组合和 onClick 方法调用之间的时间发生变化,我认为这可能会导致一些问题。有没有更好的方法在不可组合的回调函数中获取上下文?
不,这是完全正确的使用方式LocalContext.current
。它不能在重组和 onClick
.
之间改变
Context
在可组合视图之前创建:通常是您的 activity,如果您使用的是 Hilt,它可能是上下文包装器,但它在 [=14] 之前创建一次=],所以如果它会改变整个撰写视图层次结构将被重建。
您不应将其存储在视图之外,例如在视图模型中,但将其捕获在可组合项内完全没问题。
我有一段文字,我想在点击时调用函数 X。我正在使用可点击修饰符并在 onClick 方法中调用函数 X 来执行此操作。但是,函数 X 使用 Context.
为了解决这个问题,我使用了下面概述的方法:
@Composable
fun ClickableText() {
val context = LocalContext.current
Text("Click me!", Modifier.clickable { functionX(context) })
}
我的问题是,这种方法有什么问题吗?它似乎工作正常,但存储对 LocalContext.current 的本地引用似乎有点老套。如果 Context 在 UI 组合和 onClick 方法调用之间的时间发生变化,我认为这可能会导致一些问题。有没有更好的方法在不可组合的回调函数中获取上下文?
不,这是完全正确的使用方式LocalContext.current
。它不能在重组和 onClick
.
Context
在可组合视图之前创建:通常是您的 activity,如果您使用的是 Hilt,它可能是上下文包装器,但它在 [=14] 之前创建一次=],所以如果它会改变整个撰写视图层次结构将被重建。
您不应将其存储在视图之外,例如在视图模型中,但将其捕获在可组合项内完全没问题。