jetpack-compose state

OwlSuri·2023년 2월 9일
0

jetpack-compose에서는 useState와 같은 hook이 없기때문에 한 fun내에서는 var로 선언한 변수에 재할당을 해주는 방식을 사용한다.

그런데 하위 함수의 state를 상위함수에서 사용하고 싶다면?

사실 setState의 원리와 똑같다.
setState는 함수다.
상위 함수에서 state를 선언하고,
하위 함수에 state를 바꿔주는 함수를 주고 값을 받으면 된다.

screen2에서 true로 바뀐 state의 값을 main에서 사용하고 싶었다.

@Composable
fun Main(){
    // state 선언
	var state = remember {mutableStateOf(false)}

	Screen1()
    Screen2(
    	// 함수 전달
    	onChangeState = { value ->
        	state = value        	
        }
    )
    
    // state 값 여기서 필요함
    if(state){
    	...
    } else {
    	...
    }
    
    ...
}


@Composable
fun Screen1(){
	...
    ...    
}


@Composable
fun Screen2(
	onChangeState: (Boolean) -> Unit = {}
){
	...
    ...    
    // setState에 담듯
    onChangeState(true)
}

함수를 만들어서 하위함수에 전달한다는 개념이 익숙하지 않다고 생각했는데,
함수형태가 눈에 보이지 않는 useState의 setState 떄문이었나보다....

이게뭐라고 한참 고민했네.....

profile
기억이 안되면, 기록을 -

0개의 댓글