Ios 在对子状态使用ReSwift时,当另一个子状态被更新时,如何避免接收不需要的子状态更新?

Ios 在对子状态使用ReSwift时,当另一个子状态被更新时,如何避免接收不需要的子状态更新?,ios,swift,state,reactive,reswift,Ios,Swift,State,Reactive,Reswift,在对子状态使用ReSwift时,在更新另一个子状态(SubstateB)时,如何避免收到不需要的子状态更新(SubstateA) 我以为这就是重点 斯威夫特州 struct MainState: StateType { var subStateA: SubstateA? var subStateB: SubstateB? } struct SubstateA: StateType { let value: String } struct SubstateB: Stat

在对子状态使用ReSwift时,在更新另一个子状态(SubstateB)时,如何避免收到不需要的子状态更新(SubstateA

我以为这就是重点

斯威夫特州

struct MainState: StateType {
    var subStateA: SubstateA?
    var subStateB: SubstateB?
}

struct SubstateA: StateType {
    let value: String
}

struct SubstateB: StateType {
    let value: String
}

斯威夫特商店

let mainStore = ReSwift.Store<MainState>(reducer: { action, state -> MainState in

    var newState = state ?? MainState()

    switch action {

    case let anAction as UpdateSubstateA:
        newState.subStateA = newState.subStateA ?? SubstateA(value: anAction.value)

    case let anAction as UpdateSubstateB:
        newState.subStateB = newState.subStateB ?? SubstateB(value: anAction.value)

    default:
        break
    }
    return newState
}, state: nil)
ViewController.swift

class ViewController: UIViewController {

    override func viewWillAppear(_ animated: Bool) {

        mainStore.subscribe(self)  { $0.select { state in (state.subStateB ) } }

        mainStore.dispatch(UpdateSubstateA(value: "a"))
        mainStore.dispatch(UpdateSubstateB(value: "b"))
    }
}

extension ViewController: StoreSubscriber {

    func newState(state: SubstateB?) {
        print("SubstateB updated")
    }

    typealias StoreSubscriberStateType = SubstateB?
}
虽然我为SubstateB发送了一个更新操作,但在SubstateB更新时,我也会收到newState事件

控制台

SubstateB updated
SubstateB updated
SubstateB updated
SubstateB updated
SubstateB updated
SubstateB updated