diff --git a/react/src/main/java/me/pavi2410/useCompose/react/hooks.kt b/react/src/main/java/me/pavi2410/useCompose/react/hooks.kt index 750c49f..6e342ee 100644 --- a/react/src/main/java/me/pavi2410/useCompose/react/hooks.kt +++ b/react/src/main/java/me/pavi2410/useCompose/react/hooks.kt @@ -24,8 +24,29 @@ fun useState(defaultValue: T): Pair Unit> { */ @SuppressLint("ComposableNaming") @Composable -fun useEffect(vararg deps: Any, block: suspend CoroutineScope.() -> Unit) { - LaunchedEffect(keys = deps, block = block) +fun useEffect(deps: Array = emptyArray(), + onEffect: suspend () -> Unit, + onDispose: () -> Unit = {}) { + + val currentOnEffect = rememberUpdatedState(onEffect) + val currentOnDispose = rememberUpdatedState(onDispose) + + if (deps.isEmpty()) { + + LaunchedEffect(Unit) { + currentOnEffect.value() + } + DisposableEffect(Unit) { + onDispose { currentOnDispose.value() } + } + }else { + LaunchedEffect(deps) { + currentOnEffect.value() + } + DisposableEffect(deps) { + onDispose { currentOnDispose.value() } + } + } } @Suppress("PropertyName") @@ -77,4 +98,4 @@ fun useReducer(initialState: S, reducer: (S, A) -> S): Pair Uni } return Pair(thisState, ::dispatch) -} \ No newline at end of file +}