Skip to content

Commit c5abb54

Browse files
committed
⚡️: optimize unwrap
1 parent 0986831 commit c5abb54

File tree

2 files changed

+6
-0
lines changed
  • app/src/commonMain/kotlin/xyz/junerver/composehooks/example
  • hooks/src/commonMain/kotlin/xyz/junerver/compose/hooks/utils

2 files changed

+6
-0
lines changed

app/src/commonMain/kotlin/xyz/junerver/composehooks/example/UseListExample.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.compose.material3.Surface
88
import androidx.compose.material3.Text
99
import androidx.compose.runtime.Composable
1010
import kotlin.random.Random
11+
import xyz.junerver.compose.hooks.useEffect
1112
import xyz.junerver.compose.hooks.useList
1213
import xyz.junerver.composehooks.ui.component.TButton
1314

@@ -21,6 +22,9 @@ import xyz.junerver.composehooks.ui.component.TButton
2122
@Composable
2223
fun UseListExample() {
2324
val listState = useList(1, 2, 3)
25+
useEffect(listState) {
26+
println("list change!")
27+
}
2428
Surface {
2529
Column {
2630
Row {

hooks/src/commonMain/kotlin/xyz/junerver/compose/hooks/utils/ext.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package xyz.junerver.compose.hooks.utils
22

33
import androidx.compose.runtime.Composable
44
import androidx.compose.runtime.State
5+
import androidx.compose.runtime.snapshots.SnapshotStateList
56
import kotlin.contracts.ExperimentalContracts
67
import kotlin.contracts.InvocationKind
78
import kotlin.contracts.contract
@@ -35,6 +36,7 @@ internal inline fun unwrap(deps: Array<out Any?>) = deps.map {
3536
when (it) {
3637
is State<*> -> it.value
3738
is Ref<*> -> it.observeAsState().value
39+
is SnapshotStateList<*> -> it.toList()
3840
else -> it
3941
}
4042
}.toTypedArray()

0 commit comments

Comments
 (0)