Приведённый 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.