Ios 在对子状态使用ReSwift时,当另一个子状态被更新时,如何避免接收不需要的子状态更新?
在对子状态使用ReSwift时,在更新另一个子状态(SubstateB)时,如何避免收到不需要的子状态更新(SubstateA) 我以为这就是重点 斯威夫特州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
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