正在寻找在rxjs中使用scan的更干净的方法

looking for a cleaner way to use scan in rxjs

本文关键字:方法 scan 寻找 rxjs      更新时间:2023-09-26

因此,我看到了一种使用扫描的有用方法,即将函数映射到流以更新初始值。

const initialState = false;
const notThis = (x) => !x;
const toggle = clicks.map(()=> notThis)
  .startWith(initialState)
  .scan((acc,curr)=> curr(acc))

但如果我需要点击的值,我知道我可以写一个部分

const initialState = {klass:'',bool:false};
const toggle = clicks
  .map((y)=> {
    return (x) => {
       let klass  = y.target.className;
       let bool = !x.bool;
       return ({klass, bool});
     };
  })
  .startWith(initialState)
  .scan((acc,curr)=> curr(acc));

如果我正在合并多个流,这可能非常有用,但看起来也可能过于复杂。有没有更好的方法来完成向下传递数据和函数?这是这个例子链接的一个bin

好吧,您应该问问自己是否需要传递函数。我简化了您的代码:https://jsbin.com/timogitafo/1/edit?js,控制台,输出

或者更简单的一个:https://jsbin.com/giqoduqowi/1/edit?js,控制台,输出