Sobes.tech
Back to tasks
Junior — Senior
48

Перемещение состояния экрана во внешний объект

Get help with live coding in real time with Sobes Copilot
Task condition

Перенесите управление состоянием главного экрана из представления во внешний объект — например, во ViewModel или Service. Такой объект будет выступать в роли единственного источника правды и сможет передаваться по иерархии компонентов.

enum HomeState {
    case loading
    case loaded(Int)
    case error(String)
}

struct HomeView: some View {
    @State private var homeState: HomeState = .loading

    var body: some View {
        ZStack {
            switch homeState {
            case .loading:
                ProgressView()
            case .loaded(let number):
                Text("Number is: \(number)")
            case .error(let error):
                Text("Oops! \(error)")
            }
        }
    }
}