본문 바로가기
프로그래밍

ReSwift - Subscribing to multiple states

by hansoo.labs 한수댁 2018. 1. 13.
ReSwift 이슈 스레드에서 발견함 (issues 318)
* 하나의 클래스에서 다양한 스테이트를 구독하는 방법 : ReRxSwift 를 사용하거나 아래와 같이 헬퍼 클래스를 활용할 수 있겠다.

public class BlockSubscriber<s>: StoreSubscriber {
    public typealias StoreSubscriberStateType = S
    private let block: (S) -> Void

    public init(block: @escaping (S) -> Void) {
        self.block = block
    }

    public func newState(state: S) {
        self.block(state)
    }
}

아래처럼 활용..


class Sample {
   private lazy var state1Subscriber: BlockSubscriber<state1> = BlockSubscriber(block: { [unowned self], state1 in 
        self.something = state1
   })
   private lazy var state2Subscriber: BlockSubscriber<state2> = BlockSubscriber(block: { [unowned self], state2 in 
        self.something2 = state2
   })
   init() {
         // MARK: Subscriber
         appStore.subscribe(self.state1Subscriber) { state in
            state.select { state in state.state1 }
        }

         appStore.subscribe(self.state2Subscriber) { state in
            state.select { state in state.state2 }
        }
   }
}

태그

, ,

댓글0