我有以下 reducer 案例:
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
更好的方法(运算符(operator)吗?)直接作为国家?
最佳答案
你可以结合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)
}
}
}
关于kotlin - Rx - 将新输入与之前的输出相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53050349/