Когда
View в
SwiftUI неожиданно перерисовывается, это может сбивать с толку. Но есть простой способ понять, что именно вызвало обновление.
Добавьте в body вашей View:
var body: some View {
let _ = Self._printChanges()
// Ваш код
}
Данный код отобразит в консоли:
- Какое свойство (@State, @ObservedObject и т.д.) вызвало обновление View.
- Было ли обновление из-за изменения самой вьюхи.
- Была ли смена её идентичности (@identity).
Альтернативные способы отладки:
onAppear + print:
Text("Привет")
.onAppear {
print("View появилась")
}
Кастомный модификатор для вывода в консоль:
extension View {
func debugPrint(_ text: String) -> Self {
print(text)
return self
}
}
// Использование:
Circle()
.fill(.green)
.debugPrint("Круг отрисован")
Вывод:
- Self._printChanges() - лучший способ понять, почему перерисовывается View.
- onAppear и кастомные модификаторы помогут отследить жизненный цикл вью.
Вот так просто можно понять, почему вьюхи в
SwiftUI вдруг решили перерисоваться.