본문 바로가기

iOS

SwiftUI + TCA 튜토리얼 1 - Feature + View

SwiftUI + MVVM Input/Output 패턴을 사용해서 학습하다가 Apple 이 자체적으로 뷰에게 View + ViewModel 의 기능을 할 수 있도록 만들어주었기에 코드를 작성하면 작성할수록 뷰모델의 목적에 맞지 않는 점점 이상한 코드들이 쌓이기 시작해서 TCA 를 학습하고자 합니다.

 

우선 모든 것이 처음이니 저만의 단위대로 구조를 잘라서 작성해보겠습니다.

 

1. Feature

Reducer Protocol 을 채택하는 Feature 라는 하나의 단위로

State, Action, body 를 묶어서 사용하고 있습니다.

 

2. View

Feature 라는 단위를 제네릭으로 갖는 store 를 프로퍼티로 가집니다.

store 에 접근하여 send 로 액션을 방출할 수 있습니다.

 

프리뷰를 사용하여 View 에 존재하는 store 를 초기화해서 넣어줍니다.

 

추가로, Text 를 ExtractView 를 사용하여 아래로 내리고,

count 프로퍼티는 store.count 를 받아서 뷰에 보여지게끔 해보기도 했습니다.

 

3. APP

타입 프로퍼티를 통해 store 를 생성합니다.

_printChanges 메서드를 통해 액션을 감지하고, 콘솔에서 확인할 수 있습니다.

 

생성한 store 타입 프로퍼티를 뷰에 넣어주는 형식으로 진행했습니다.

 

최종적으로 카운팅 + - 를 진행하며, 콘솔에 액션이 찍히는 모습을 확인할 수 있네요.