개요컴포즈를 쓰면서, 상태 호이스팅이라는 개념을 사용하면서, 하위 컴포저블에서 사용하는 데이터를 상위 컴포저블에서 매개변수로 내려주는게 은근 불편하다(?)고 느끼고 있는 중이다. 그러던 도중 CompositionLocal에 대해 알게되었고, 학습한 내용을 정리해보려고 한다. 1. CompositionLocal 등장 CompositionLocal에 대해 적기 전 알고 넘어야하는 것이 있다! 바로 컴포저블 함수는 위의 그림처럼 트리 구조로 구성된다는 점이다. 이런 구조로 되어 있어 우리는 상태 호이스팅을 위해 하위 컴포저블에서 쓰이는 UI 상태를 상위 컴포저블에서 매개변수로 내려주는 방식을 사용한다. 하지만! 트리의 깊이가 매우 깊어진다면? 그 데이터가 필요한 컴포저블까지 매개변수를 계속해서 내려주는 방식은..
개요컴포즈로 프로젝트를 진행하고 있긴 하지만, 다른 팀원들이 작성한 코드를 리뷰할 때마다 이게 뭐지??? 하고 갑자기 튀어나온 것이 있다. 바로 LaunchedEffect! 오늘 공식문서를 통해 싹 정리해봐야지. Compose의 부수 효과부수 효과는 컴포저블 함수의 범위 밖에서 발생하는 앱 상태에 대한 변경사항이다. 즉 UI의 상태 변화와 관련이 없이 발생하는 작업이나 컴포저블의 생명주기 동안 수행되는 비동기 작업, 리소스 정리 작업 등이 해당된다. 여기서 나온 예시는 네트워크 요청, 데이터베이스 접근, 스낵바 표시, 특정 상태 조건에 따라 다른 화면으로 이동하는 일회성 이벤트를 트리거할 때를 말한다. 컴포저블 함수에는 부수 효과가 없어야 하는데, 위의 예시와 같이 필요한 상황이 있을 수 있다! 이때 우..
개요이번 프로젝트에 컴포즈를 사용하는데 컴포즈에서는 화면 전환을 할 때, Jetpack Compose Navigation을 사용해야 한다.1.Compose Navigation 개요Compose Navigation은 Android 앱에서 화면 전환을 관리하는 네비게이션 기능을 Jetpack Compose 환경에서 구현할 수 있게 해주는 라이브러리이다. 2.Compose를 사용한 탐색공식문서에 정리된 방식대로 Compose를 사용한 탐색에 대해 정리해보자. NavController 만들기-> 네비게이션 상태를 관리하는 컨트롤러, 화면 간 이동을 제어한다.-> 얘를 통해 다른 화면으로 이동하거나 뒤로 이동할 수 있다.val navController = rememberNavController() 컴포저블 계층 ..
개요컴포저블의 수명 주기는 기존 뷰(View) 기반 시스템과는 다르다. 이번 글에서 컴포저블 수명 주기에 대해 정리해보려고 한다. 1. 컴포저블 수명주기 개요컴포지션은 앱의 UI를 설명하고 컴포저블을 실행하여 생성된다. 컴포지션은 UI를 기술하는 컴포저블의 트리 구조이다. 초기 컴포지션시 처음으로 컴포저블을 실행할 때, 컴포지션에서 UI를 기술하기 위해 호출하는 컴포저블을 추적합니다. 그 다음 앱의 상태가 변경되면 리컴포지션을 예약합니다. 초기 컴포지션, 리컴포지션의 용어가 나오는데 예전에도 정리했지만 한 번 더 정리해보자! 컴포지션-> 컴포저블이 처음으로 호출되어 UI가 그려지는 시점이다.-> 컴포지션은 UI 계층 구조를 생성하는 과정으로, 컴포저블 함수가 처음 실행되면서 트리를 구성하게 된다. 리컴포..