Ramda,如果条件通过,则通过管道中的值

时间:2019-05-19 07:24:35

标签: ramda.js

export const getValueFromPsetProperty = (pset: string, property: string) => R.pipe(
  R.prop('pSets'),
  R.find(R.propEq('name', pset)),
  R.propOr([], 'properties'),
  R.find(R.propEq('name', property)),
  R.propOr(null, 'value'),
  R.ifElse(isValueValid, null,R.identity),
);

最后一个管道不起作用。我想做的是如果isValueValid为true,则传递值。我该怎么办?

1 个答案:

答案 0 :(得分:3)

您似乎没有正确使用R.ifElse。前三个参数都应该是函数:

  1. 谓词功能
  2. 谓词为真时执行的函数
  3. 谓词为假时执行的函数

因此,根据您的描述,如果isValueValid返回true,则想返回不变的值。在这种情况下,您的R.ifElse应该是:

R.ifElse(isValueValid, R.identity, someOtherFunction)

您可能要考虑R.unless,它仅在谓词为false时才运行函数。如果值有效,则R.unless将其保持不变。

R.unless(isValueValid, someFunctionIfValueIsNotValid);