我有以下减速器案例:
class XYZ Reducer(private val state: BehaviorRelay<State>) {
override fun invoke(events: Observable<Any>): Observable<State> =
events.ofType(Event::class.java).map { event ->
handleFieldClicked(event, state.value)
}
Reducer需要2条信息:
我正在将状态的行为传递给reducer。
我试图找到一种方法来访问map{}
中的先前状态和当前事件,例如扫描,我发现的全部是scan()
,该变量将当前事件和先前事件作为参数。
您知道比直接将behaviorRelay
传递为状态更好的方法(运算符吗?)
答案 0 :(得分:1)
您可以将flatMap()
与take(1)
组合:
class XYZ Reducer(private val state: BehaviorRelay<State>) {
override fun invoke(events: Observable<Any>): Observable<State> =
events.ofType(Event::class.java).flatMap { event ->
state.take(1).map { state ->
handleFieldClicked(event, state)
}
}
}