2017-09-18 1 views
0

入れ子の三項式を使って作業コードを作っています。 ramda.jsや別の機能ヘルパーを使用して、それをよりきれいにする方法はありますか? condは良い選択ですか?ramda.jsを使用するために入れ子になった三項式を入れ替えよう

私は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, 

がenougth以上だろう。

答えて

0

R.condは、間違いなくネスティングを削除するための1つのオプションです。これは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' 
}))) 
関連する問題