Сравнение способов хранения данных во View: внешнее значение vs @State

let message — входное значение от родителя; @State message — локальный источник состояния, сохраняемый SwiftUI по identity представления.

Короткий ответ

Что ответить на собеседовании

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 не требуется.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее