reactorkit으로 단방향 반응형 앱 만들기

49
let swift(17) ReactorKit ReactorKit github.com/devxoul

Upload: suyeol-jeon

Post on 21-Jan-2018

240 views

Category:

Software


6 download

TRANSCRIPT

Page 1: ReactorKit으로 단방향 반응형 앱 만들기

let swift(17)

ReactorKitReactorKit

github.com/devxoul

Page 2: ReactorKit으로 단방향 반응형 앱 만들기

• StyleShare, Inc.• Open Source Lover• Then• URLNavigator• RxSwift• ObjectMapper

Page 3: ReactorKit으로 단방향 반응형 앱 만들기

let swift(17)

Why?

Page 4: ReactorKit으로 단방향 반응형 앱 만들기

Why?1. Massive View Controller

Page 5: ReactorKit으로 단방향 반응형 앱 만들기

Why?1. Massive View Controller

2. RxSwift is Awesome

Page 6: ReactorKit으로 단방향 반응형 앱 만들기

Why? :

1. Massive View Controller

2. RxSwift

Page 7: ReactorKit으로 단방향 반응형 앱 만들기

Why? - Problems RxSwift ?

• Rx + MVC?

• Rx + MVVM?

⚠ : .

Page 8: ReactorKit으로 단방향 반응형 앱 만들기

Why? - ProblemsCyclic Data Dependencies

• :

• nextURL

Page 9: ReactorKit으로 단방향 반응형 앱 만들기

Why? - ProblemsCyclic Data Dependencies

• : BehaviorSubject

• BehaviorSubject(=Variable)

• RxSwift

Page 10: ReactorKit으로 단방향 반응형 앱 만들기

Why? :

1. Massive View Controller

2. RxSwift

Page 11: ReactorKit으로 단방향 반응형 앱 만들기

Why? :

1. Massive View Controller

2. RxSwift

3.

Page 12: ReactorKit으로 단방향 반응형 앱 만들기

let swift(17)

ReactorKit

Page 13: ReactorKit으로 단방향 반응형 앱 만들기

ReactorKit1. Massive View Controller . ✅

Page 14: ReactorKit으로 단방향 반응형 앱 만들기

ReactorKit2. RxSwift . ✅

• ReactorKit RxSwift

• RxSwift

Page 15: ReactorKit으로 단방향 반응형 앱 만들기

ReactorKit3. . ✅

• reduce()

Page 16: ReactorKit으로 단방향 반응형 앱 만들기

ReactorKit...

• ( )

• CocoaPods 8800 / 280

Page 17: ReactorKit으로 단방향 반응형 앱 만들기

ReactorKit...

• ( )

• CocoaPods 8800 / 280

Page 18: ReactorKit으로 단방향 반응형 앱 만들기

Basic Concept

Page 19: ReactorKit으로 단방향 반응형 앱 만들기

Basic Concept

• Reactor

• Reactor

• , , View

Page 20: ReactorKit으로 단방향 반응형 앱 만들기

Basic Concept

protocol View { associatedtype Reactor

var disposeBag: DisposeBag

// self.reactor func bind(reactor: Reactor) }

Page 21: ReactorKit으로 단방향 반응형 앱 만들기

Basic Concept

protocol StoryboardView { associatedtype Reactor

var disposeBag: DisposeBag

// func bind(reactor: Reactor) }

// Storyboard

Page 22: ReactorKit으로 단방향 반응형 앱 만들기

Basic Concept

• View Action

• View

• View Reactor

Page 23: ReactorKit으로 단방향 반응형 앱 만들기

Basic Concept

protocol Reactor { associatedtype Action associatedtype Mutation associatedtype State

var initialState: State }

Page 24: ReactorKit으로 단방향 반응형 앱 만들기

Basic Concept

Page 25: ReactorKit으로 단방향 반응형 앱 만들기

Basic Concept

RxSwift

Page 26: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

Page 27: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

Page 28: ReactorKit으로 단방향 반응형 앱 만들기

Data FlowAction State

• State

• Action State Mutation

• Mutation State /

• Mutation View

Page 29: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

Page 30: ReactorKit으로 단방향 반응형 앱 만들기

Data Flowclass ProfileViewReactor: Reactor { enum Action { case follow // }

struct State { var isFollowing: Bool // } }

Page 31: ReactorKit으로 단방향 반응형 앱 만들기

Data Flowclass ProfileViewReactor: Reactor { enum Action { case follow // }

struct State { var isFollowing: Bool // } }

API State

Page 32: ReactorKit으로 단방향 반응형 앱 만들기

Data Flowclass ProfileViewReactor: Reactor { enum Action { case follow // }

enum Mutation { case setFollowing(Bool) // }

struct State { var isFollowing: Bool // } }

Page 33: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow(Action) -> Observable<Mutation>

(State, Mutation) -> State

Page 34: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

Page 35: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

Page 36: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

Action.follow

Page 37: ReactorKit으로 단방향 반응형 앱 만들기

Data FlowAction.follow

Page 38: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

UserService.follow()

Page 39: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

UserService

Page 40: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

Observable<Bool>

Page 41: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

Page 42: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

Mutation.setFollowing(true)

Page 43: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

Mutation.setFollowing(true)

Page 44: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

isFollowing = true

Page 45: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

Page 46: ReactorKit으로 단방향 반응형 앱 만들기

Data Flow

Page 47: ReactorKit으로 단방향 반응형 앱 만들기

let swift(17)

Example - Live Coding

Page 48: ReactorKit으로 단방향 반응형 앱 만들기

CommunitySwift Korea Slack: #reactorkit

• http://slack.swiftkorea.org/

RxSwift Slack: #reactorkit ( )

• http://rxswift-slack.herokuapp.com/

Page 49: ReactorKit으로 단방향 반응형 앱 만들기

http://reactorkit.io