【问题标题】:Swap nested ternary expressions to cond using ramda.js使用 ramda.js 将嵌套的三元表达式交换为 cond
【发布时间】:2017-09-18 14:11:17
【问题描述】:

我有使用嵌套三元表达式的工作代码。有没有办法使用 ramda.js 或其他功能帮助器使其更清洁? cond 会是一个不错的选择吗?

我是 ramda 新手,我不知道如何将那段代码转换为 ramda 方式。

  const enhance: React$HOC<*, InitialProps> = compose(
      withProps(props => ({
        iconColor: props.isPriority ? (props.isCompleted ? variables.color.lightpurple : variables.color.purple ) : variables.color.gray3,
        iconName: props.isPriority ? 'star-full' : 'star-empty',
      }))
    )

只转换那条疯狂的长线:

iconColor: props.isPriority ? (props.isCompleted ? variables.color.lightpurple : variables.color.purple ) : variables.color.gray3,

会不止于此。

【问题讨论】:

    标签: javascript ramda.js


    【解决方案1】:

    R.cond 绝对是删除嵌套的一种选择。这也可以与 R.applySpec 结合生成一个对象,其值都来自同一个参数(在您的实例中为 props)。

    const enhance: React$HOC<*, InitialProps> = compose(withProps(R.applySpec({
        iconColor: R.cond([
            [({ isPriority }) => !isPriority, () => variables.color.gray3],
            [({ isCompleted }) => isCompleted, () => variables.color.lightpurple],
            [() => true, () => variables.color.purple]
        ]),
        iconName: ({ isPriority }) => isPriority ? 'star-full' : 'star-empty'
    })))
    

    【讨论】:

      猜你喜欢
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 2013-03-05
      • 1970-01-01
      • 2015-07-05
      相关资源
      最近更新 更多