Hoisting state in Compose
Composable functions are usually categorized in terms of state handling in two main categories:
- Stateful, which allows the composable to hold and manage its state. Stateful composables are those functions where the caller (or parent composable) doesn't need to manage the state. They model basic UI interactions such as animations or expanding content, and they are usually okay to be stateful and hold a
State
object. - Stateless, which allows the composable to delegate the state management and to forward event callbacks to its parent composable. Composables that not only impact the UI as their state changes but are also of interest to the presentation or business logic are usually ok to be stateless. This way, the
ViewModel
component can be the only source of truth for their state to control and manage UI changes but also to avoid illegal states.
In our case, state changes when a restaurant is marked as a favorite or not. Since we want...