Javascript 如何根据三个条件设置className?
我目前拥有以下功能组件:Javascript 如何根据三个条件设置className?,javascript,reactjs,react-jsx,Javascript,Reactjs,React Jsx,我目前拥有以下功能组件: let renderEmailField = ({input, label, type, meta: {touched, error, pristine}}) => <fieldset className=???? ..... let renderEmailField=({input,label,type,meta:{toucted,error,pristine}})=> 我认为,使用三元运算符编写多个条件并不是一个好主意,您可以在这里简
let renderEmailField = ({input, label, type, meta: {touched, error, pristine}}) =>
<fieldset className=????
.....
let renderEmailField=({input,label,type,meta:{toucted,error,pristine}})=>
我认为,使用三元运算符编写多个条件并不是一个好主意,您可以在这里简单地调用一个函数并将if-else
条件放在该函数中,然后返回该函数的类名
像这样:
<fieldset className={this._setClassName()}/>
_setClassName(){
if()
return "a";
else if()
return "b";
else
return "c";
}
let renderEmailField = ({input, label, type, meta: {touched, error, pristine}}) => {
let className = "";
if()
className = "a";
else if()
className = "b";
else
className = "c";
return(
<fieldset className={className}/>
)
}
我同意使用三元运算符不是最好的。您可以使用一些if
语句来设置它,但是我找到了一种更简洁的方法来使用这个包,它也可以是内联的。当前,您现在拥有的代码与类名类似:
<fieldset className={classNames({
"": !touched && !error,
"has-danger": touched && error,
"has-success": touched && !error
})}>
...
</fieldset>
对于每个要添加的潜在类,您描述了添加它的特定条件。如果触摸的truthy和error
为false,则不添加类。如果未原始
,且触摸
,且错误
,则添加“有危险”
。如果未原始
,且触摸
,且无错误
,则添加“已成功”
。你甚至可以去掉第一个条件,因为它有点无用,可以添加你自己的案例。这是一个很好的调用,但现在它就存在于让renderEmailField=({input,label,type,meta:{toucted,error,pristine}}}=>
我不能正确运行函数的地方?你为什么不在最初的问题中问这个问题?这是这个am的一个新问题,昨天没有,非常好-尝试这个软件包now@AnApprentice是的,我昨天在回答中也提到了。
<fieldset className={classNames({
"": !touched && !error,
"has-danger": touched && error,
"has-success": touched && !error
})}>
...
</fieldset>
<fieldset className={classNames({
"": !touched && !error,
"has-danger": !pristine && touched && error, //you could cache !prinstine && touched as to not have duplicate code
"has-success": !pristine && touched && !error
})}>
...
</fieldset>