ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • React 개발자가 공부해본 SwiftUI
    기타 2023. 9. 7. 23:08

    이 글은 React에 익숙한 제가 SwiftUI를 보고 React와 유사한점, 다른점에 대해서 기록하고자 시작하였습니다.

    🍊 apple developer 공식문서와 SwiftUI 튜토리얼을 참고했습니다.

     

    SwiftUI는 2019년 WWDC19에서 공개되었으니, 벌써 등장한지 몇년이나 지난 UI 프레임워크이다.

    UIKit으로 개발하는 법은 잘 모르지만, 기존보다 DX가 향상된 개발 방법인 것 같다.

     

    SwiftUI를 React와 비교하면서 생각하게 된 이유는 아무래도 일단 둘 모두 선언형으로 작성할 수 있고, 화면에서 변수를 처리하기 위해서 State를 사용한다는 점이다.

     

    import {useState} from "react";
    
    function App() {
      const [etcState, setEtcState] = useState("");
      
      return <div>{etcState}</div>
    }
    • React의 useState hook
    import SwiftUI
    
    struct ContentView: View {
        @State private var etcState = ""
    
        var body: some View {
            VStack {
                Text(etcState)
            }
        }
    }
    • SwiftUI의 @State

    이 둘의 큰 차이점으로는 useState 훅에서 setState로만 상태값을 바꿔야 하는 React와는 달리, SwiftUI에선 평범하게 @State 변수에 데이터를 재할당하면 된다.

     

    그리고 상위 부모가 하위 자손에게 이 State를 전달할 땐 어떤가? React는 Props, SwiftUI는 @Binding이다.

    🌧️ @State, @Binding 이외에도 @Published, @EnvironmentObject와 environmentObject 같은 프로퍼티 레퍼를 사용하거나 @StateObject, ObservableObject를 사용할 수 있다.

    import SwiftUI
    
    struct TopView: View {
        @State private var title = "Brand New World!"
    
        var body: some View {
            DownView(title: $title)
        }
    }
    
    struct DownView: View {
        @Binding var title: String
    
        var body: some View {
            VStack {
                Text(title)
                TextField("Enter title", text: $title)
            }
        }
    }
    • SwiftUI의 @Binding
    import {useState} from "react";
    
    function Top() {
      const [title, setTitle] = useState("Brand New World!");
      
      return <Down title={title} setTitle={setTitle} />
    }
    
    function Down({title, setTitle}) {
      <div>
        <p>{title}</p>
        <textarea value={title} onChange={(e) => setTitle(e.target.value)} />
      </div>
    }
    • React의 Props (구조분해할당)

    그리고 화면의 라이프사이클에 대한 사용법에 차이가 있다.

    React의 useEffect가 더 다양하게 라이프 사이클을 관리할 수 있고, SwiftUI는 화면이 나타났을때, 사라졌을 떄만 로직을 실행시킬 수 있다.

    import {useEffect} from 'react';
    
    function App() {
      useEffect(() => {
        // 화면이 mounted되었을 때 실행
        console.log("Hello");
        // 화면이 unmounted되었을 때 실행
        return () => {
          console.log("Bye");
        }
      }, []);
      return <div>Hi!!</div>
    }
    • react의 useEffect, 아시다시피 추가적으로 상태가 변경되었을 때에도 로직을 실행할 수 있다.
    import SwiftUI
    
    struct ContentView: View {
        var body: some View {
          Text("Screen")
        }.onAppear {
            print("Hello")
         }.onDisappear {
            print("Bye")
         }
    }
    • SwiftUI의 onAppear, onDisappear

     

    이외에도 HStack, VStack은 div(특히 flex), ForEach는 map, @EnvironmentObject는 전역 상태 관리등 생각해보면 비슷하지 않나? 싶은 개념들이 꽤 있었던 것 같다.

    물론 세부 구현이나 실제 동작은 다르겠지만, SwiftUI는 React 개발자에게 입문하기 쉬운 IOS앱 UI 개발 프레임워크가 아닌가 하는 생각이 들어 이 글을 남기게 되었다.

     

     

    https://developer.apple.com/kr/xcode/swiftui/

     

    SwiftUI 개요 - Xcode - Apple Developer

    SwiftUI는 Swift의 성능을 바탕으로 모든 Apple 플랫폼에서 사용자 인터페이스를 구축할 수 있는 혁신적이고 간소화된 방법입니다.

    developer.apple.com

    https://developer.apple.com/tutorials/swiftui

     

    Introducing SwiftUI | Apple Developer Documentation

    SwiftUI is a modern way to declare user interfaces for any Apple platform. Create beautiful, dynamic apps faster than ever before.

    developer.apple.com

     

    '기타' 카테고리의 다른 글

    HTTPS, SSL, TLS 정리하기  (0) 2023.09.12
    Kotlin의 기초 문법 알아보기  (0) 2023.09.09
    animation 성능 향상 (requestAnimationFrame)  (0) 2023.09.04
    Headless UI란?  (0) 2023.09.03
    선언적 프로그래밍이란?  (0) 2023.08.30
Designed by Tistory.