Optimize rememberInVM allocation
This commit is contained in:
1 parent
2fc8b421b0
commit
b7a2d93f03
1 file changed
+3
-3
@@ -42,12 +42,12 @@ class StateMapViewModel : ViewModel() {
|
||||
|
||||
@Composable
|
||||
inline fun <reified T : Any> rememberInVM(
|
||||
vararg inputs: Any?,
|
||||
userKey: Any? = null,
|
||||
crossinline init: @DisallowComposableCalls ViewModel.() -> T,
|
||||
) = with(viewModel<StateMapViewModel>()) {
|
||||
val key = currentCompositeKeyHash
|
||||
remember(*inputs) {
|
||||
val states = statesMap.getOrPut(key) { ArrayDeque() }
|
||||
remember(userKey) {
|
||||
val states = statesMap.getOrPut(key, ::ArrayDeque)
|
||||
states.removeLastOrNull() as T? ?: init()
|
||||
}.also { value ->
|
||||
val valueState by rememberUpdatedState(value)
|
||||
|
||||
Reference in new issue
Block a user