Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!26.10.2022
SwiftUI після React - враження
📱📐🎨 Потрохи просуваюсь зі своїм проєктом на HealthKit та тепер на SwiftUI. Скористуюсь нагодою розповісти трохи про SwiftUI і як на ньому писати після React.
Всім відомо, що SwiftUI був створений, щоб йти в ногу з часом саме з React та іншими схожими фреймворками. Це добре.
Перше слабке місце SwiftUI - відсутність JSX. JSX це чудова технологія, бо з одного боку надає можливість описувати структуру елементів та атрибутів наочним чином, а з іншого боку, еквівалентна JavaScript/TypeScript коду та піддається всім технологіям роботи з кодом — рефакторингу на функції та модулі, формальній перевірці та інше.
У SwiftUI структура задається звичайними функціями, а також блоками. При чому модифікатори додаються в кінці функції чи блока, тому розібратись, що до чого, складніше.
Друге слабке місце - Swift це суворо типізована мова, але при цьому з тенденцією автоматичного виведення типів. Тож весь той синтаксис має створювати коректну структуру типів. Я не маю компетенції повністю зрозуміти, як воно працює, але факт, що у великій компоненті можна прийти до неможливості виведення типів. Ще скоріше цю помилку побачиш, якщо вживати блоки if
, які, на відміну від JSX, інколи працюють добре, а інколи ламають компілятор. Відповідь — рефакторити на менші компоненти.
Щоб почати, варто відразу зрозуміти, що аналог Redux будується на основі ObservableObject. Тобто в простих випадках можна зберігати стан в компоненті, як і в React, але при подальшому розвитку краще винести логіку в клас з ObservableObject.
З приємного — гнучка система лейаутів — особливо для того, щоб покрити різні розміри екранів, та навіть різні пристрої. Бо у SwiftUI одна і та сама компонента може працювати й на айфоні, і на маці, і на годиннику. Тут все супер.
Ще раджу продивитись офіційний курс по SwiftUI, він багато чого прояснює.