Назад к задачам
Junior — Senior
8

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

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Перенесите управление состоянием главного экрана из представления во внешний объект — например, во 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)")
            }
        }
    }
}