Переиспользуемый компонент кнопки

Приведённый ReusableButton уже решает задачу: label задаёт подпись, handler выполняется при нажатии. Общий внешний вид можно добавить через ButtonStyle.

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

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

Приведённый ReusableButton уже решает задачу: label задаёт подпись, handler выполняется при нажатии. Общий внешний вид можно добавить через ButtonStyle.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо реализовать универсальную кнопку, позволяющую задать отображаемый текст и действие при её нажатии.

struct ReusableButton: View {
    var label: String
    var handler: () -> Void

    var body: some View {
        Button(action: handler) {
            Text(label)
        }
    }
}

Ответ

Приведённый ReusableButton уже решает задачу: label задаёт подпись, handler выполняется при нажатии. Общий внешний вид можно добавить через ButtonStyle.

Использование:

ReusableButton(label: "Продолжить") {
    print("Продолжить нажато")
}

Если подпись и действие не меняются внутри компонента, свойства можно объявить let. Действие нельзя вызывать при вычислении body: в Button передаётся closure, а не результат его исполнения. Для иконок и составных подписей расширьте компонент generic-параметром Label: View и ViewBuilder вместо обязательной строки. Disabled-состояние и доступность оставляйте совместимыми со стандартным Button.

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

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

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

Подробнее