2017-04-27 2 views
1

에 트랜스 듀서의 사용을 이해 함께)다음 코드를 감안할 때 Ramda

그러나 변환기 형태로 나는 빈 배열을 얻는다. R.filter 또는 R.map을 제거하면 (파이프에 단 하나의 작업 만 있음) 파이프에 해당 항목 만있는 것으로 예상되는 결과를 얻습니다. 그러나 이러한 작업을 모두 결합 할 수는 없습니다.

무엇이 여기에 있습니까?

이 코드와 코드 펜을 사용할 수 있습니다 : http://codepen.io/rodeoclash/pen/EWJmMZ?editors=1112

답변

3

바와 같이 this article 지적 :

이 때문에 우리는 트랜스 듀서의 특성 구성 => 파이프에서 변경해야했습니다. 트랜스 듀서가 직접 구성 될 수 있지만 변형의 실행은 역전됩니다. 즉, 은 배열에 R.pipe를 사용할 때마다 트랜스 듀서 용으로는 R.compose, 은 반대로 사용합니다.

Thesearticlesare 또한 매우 유용합니다. 또한 물건을 검사하기위한 멋진 도구가 있습니다 : ramda-debug.

const transducer = R.compose(
    R.filter(R.propEq('completed', true)), 
    R.map((obj) => { 
    return { 
     label: `${obj.name} (${obj.completed})`, 
    } 
    }) 
) 

예 : Ramda REPL.

+0

그래서 트랜스 듀서를 사용하면 제공된 기능의 순서가 바뀐 것 같습니다. 트랜스 듀서와 함께'R.pipe'를 사용할 때 트랜스 듀서없이'R.pipe'를 사용하는 것과 같은 순서로 트랜스 듀서에서 작동하게 될 것이라고 기대했습니다. – Samuel

+0

네, 몇 가지 유용한 링크로 답변을 업데이트했습니다. – devor

+0

대단 하네, 고마워! – Samuel