Mou*_*ror 5 javascript functional-programming purely-functional
我有这样的代码.如何使用JavaScript中的函数式编程以更干净,更优雅的方式编写它?我想摆脱嵌套的三元表达式.有任何想法吗?
props => ({
iconColor: props.isPriority ? (props.isCompleted ? variables.color.lightpurple : variables.color.purple ) : variables.color.gray3,
iconName: props.isPriority ? 'star-full' : 'star-empty',
}))
Run Code Online (Sandbox Code Playgroud)
这是该代码的其余部分:
编辑:
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',
}))
)
Run Code Online (Sandbox Code Playgroud)
Aad*_*hah 10
是的,但是我的生日不满意:
44:16 error Do not nest ternary expressions [no-nested-ternary]
如果这是你唯一的问题,那么解决方案很简单.创建自己的条件函数:
const iff = (condition, then, otherwise) => condition ? then : otherwise;
props => ({
iconColor: props.isPriority ?
iff(props.isCompleted, variables.color.lightpurple, variables.color.purple) :
variables.color.gray3,
iconName: props.isPriority ? 'star-full' : 'star-empty',
})
Run Code Online (Sandbox Code Playgroud)
现在你的短信不应该抱怨.话虽这么说,你应该[no-nested-ternary]在你的linter中禁用.你的linter认为嵌套条件是坏的,这有点愚蠢.