Карточка Middle Внедрение зависимостей обновлено
DI через Environment в SwiftUI
Вопрос
Как пробросить зависимость в глубину иерархии SwiftUI без передачи через каждый инициализатор?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Объявить ключ окружения (@Entry var apiClient: APIClient = .live в extension EnvironmentValues с iOS 18 SDK, или EnvironmentKey), задать .environment(\.apiClient, client) у корня, читать @Environment(\.apiClient).
Ответ
Объявить ключ окружения (@Entry var apiClient: APIClient = .live в extension EnvironmentValues с iOS 18 SDK, или EnvironmentKey), задать .environment(\.apiClient, client) у корня, читать @Environment(\.apiClient).
Разбор
Удобно для сервисов. Состояние и view model лучше передавать явно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.