안냥하세요
오늘은 리액터킷 기본 틀을 만들ㅇㅓ 보면서 리액터킷을 어떻게 구성하는지, 어떻게 동작하는지 공부해보았어요
기본 흐름은
초기 상태가 false 인 initialState를 만들어줌
-> 리액터킷을 만들어 준다음에
-> bind() 동작하며 상태 값을 true로 바꿔줌
그리고 우리는 위 동작을 하는 Reactor를 만드는 것을 연습해볼 것임!
Reactor 만들기
import RxSwift
import ReactorKit
import Foundation
final class ViewReactor: Reactor {
//사용자의 행동
enum Action {
case initialize
}
//상태 변화
enum Mutation {
case setIsInitialized(Bool)
}
//뷰 상태
struct State {
var isInitialized: Bool
}
//초기 상태
let initialState: State = State(isInitialized: false)
func mutate(action: Action) -> Observable<Mutation> {
switch action {
case .initialize:
return .concat([
.just(.setIsInitialized(true))
])
}
}
func reduce(state: State, mutation: Mutation) -> State {
var newState = state
switch mutation {
case let .setIsInitialized(value):
newState.isInitialized = value
}
return newState
}
}
전에 게시물에서 말씀드렸죠?
왜가 아니라 리액터킷은 그냥 이렇게 쓰는거임
이렇게 만들어진 리액터를
SceneDelegate에서 Reactor 주입하기
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
let window = UIWindow(windowScene: windowScene)
window.windowScene = windowScene
let vc = ViewController()
vc.reactor = ViewReactor() // reactor 주입
window.rootViewController = vc
window.makeKeyAndVisible()
self.window = window
}
사실 아래의 뷰컨에 적용하기가 먼저인데 흐름을 설명하기엔 씬델리게이트가 먼저 나와야할 것 같아서 먼저 넣음
여기서 리액터가 주입되는 순간 아래 뷰컨의 bind() 메서드가 동작합니다잉
ViewController에서 적용하기
//
// ViewController.swift
// reactorKit3
//
// Created by 23ji on 9/9/25.
//
import ReactorKit
import RxSwift
import UIKit
final class ViewController: UIViewController, View {
var disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .red
}
func bind(reactor: ViewReactor) {
reactor.action.onNext(.initialize)
print("isInitialized :", reactor.initialState.isInitialized)
reactor.state.map { $0.isInitialized }
.subscribe(onNext: { value in
print("🔥 isInitialized changed to:", value)
})
.disposed(by: disposeBag)
}
}
bind가 바로 동작해서 우리가 리액터에서 정의해줬던
상태값 false가 먼저 찍히고 onNext를 통해 바뀐 true도 출력됨!

이렇게 의도대로 잘 동작한답니다~
그럼 안녕~
'iOS > ReactorKit' 카테고리의 다른 글
| [ReactorKit] 버튼 누르면 숫자가 증가하는 리액터 만들기 (0) | 2025.09.11 |
|---|---|
| [ReactorKit] 리액터킷의 기본 개념 (2) | 2025.09.10 |
| [ReactorKit] Swift Storyboard 없이 코드로만 앱 만들기 (0) | 2025.09.09 |
댓글