所以我看到了一种使用扫描的有用方法,您可以将函数映射到流以更新初始值。
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));
如果我合并多个流,这可能非常有用,但它看起来也可能过于复杂。有没有更好的方法来完成传递数据和功能?以下是此示例link
的bin答案 0 :(得分:0)
好吧,你应该问问自己是否需要传递功能。我让你的代码更简单: https://jsbin.com/timogitafo/1/edit?js,console,output
或者更简单的一个:https://jsbin.com/giqoduqowi/1/edit?js,console,output