let message — входное значение от родителя; @State message — локальный источник состояния, сохраняемый SwiftUI по identity представления.
Сравнение способов хранения данных во View: внешнее значение vs @State
let message — входное значение от родителя; @State message — локальный источник состояния, сохраняемый SwiftUI по identity представления.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Продемонстрировать различие между двумя SwiftUI‑вью: одна получает данные извне через константу, а другая хранит их во внутреннем состоянии при помощи свойства @State.
struct SuccessView: some View {
let message: String
var body: some View {
Text("Number is: \(message)")
}
}
struct DemoSuccessView: some View {
@State var message: String
var body: some View {
Text("Number is: \(message)")
}
}
Ответ
let message — входное значение от родителя; @State message — локальный источник состояния, сохраняемый SwiftUI по identity представления.
В обоих объявлениях исправьте struct ...: some View на struct ...: View; some View остаётся типом body. Когда родитель передаёт новое message, первый экран отобразит новое входное значение. Начальное значение State обычно используется при создании его хранилища и не обязано перезаписываться при каждом новом вызове initializer с тем же identity. Если ребёнок должен редактировать родительское значение, нужен Binding. Делать входные данные State только ради обновления Text не требуется.