1
考虑下面的代码:了解使用传感器的Ramda
const objs = [
{
name: '1st',
completed: false,
},
{
name: '2nd',
completed: true,
},
{
name: '3rd',
completed: true,
},
]
const transducer = R.pipe(
R.filter(R.propEq('completed', true)),
R.map((obj) => {
return {
label: `${obj.name} (${obj.completed.toString()})`,
}
}),
)
const intoArray = R.into([])
console.log('-- working --')
console.log(transducer(objs))
console.log('-- not working --')
console.log(intoArray(transducer, objs))
当使用R.pipe
形式我得到预期的结果(在一个阵列的两个对象都与名称的标签字段并完成场插值一起)
但是,与传感器形式我得到一个空的数组。如果我删除了R.filter
或R.map
(因此只有一个操作在管道中),我得到了在管道中只有该项目的预期结果。但是,我似乎并不能将这两种操作结合起来。
我在这里错过了什么?
A码笔与该代码可用:http://codepen.io/rodeoclash/pen/EWJmMZ?editors=1112
因此,使用传感器似乎反转了提供给它的功能的顺序? 我的期望是在传感器上使用'R.pipe'将会按照与使用不带传感器的'R.pipe'相同的顺序进行操作。 – Samuel
是的,用几个有用的链接更新了我的答案。 – devor
太好了,非常感谢! – Samuel