Skip to content

Commit 107f244

Browse files
committed
Refactor: throttled Composable의 재컴포지션 방지
1 parent ba8309e commit 107f244

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

  • core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/modifier

core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/modifier/ClickThrottler.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package com.threegap.bitnagil.designsystem.modifier
22

33
import android.os.SystemClock
44
import androidx.compose.runtime.Composable
5+
import androidx.compose.runtime.getValue
56
import androidx.compose.runtime.remember
7+
import androidx.compose.runtime.rememberUpdatedState
68

79
class ClickThrottler(private val throttleTimeMs: Long = 500L) {
810
private var lastClickTime: Long = 0L
@@ -21,9 +23,10 @@ fun throttled(
2123
throttleTimeMs: Long = 500L,
2224
onClick: () -> Unit,
2325
): () -> Unit {
24-
val throttler = remember { ClickThrottler(throttleTimeMs) }
26+
val currentOnClick by rememberUpdatedState(onClick)
27+
val throttler = remember(throttleTimeMs) { ClickThrottler(throttleTimeMs) }
2528

26-
return remember(onClick) {
27-
{ throttler.processEvent(onClick) }
29+
return remember(throttler) {
30+
{ throttler.processEvent { currentOnClick() } }
2831
}
2932
}

0 commit comments

Comments
 (0)