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>