我在react-redux-form中有以下内容:
<fieldset>
<label>{label}</label>
<div>
<input {...input} name="email" type="text" className="form-control" />
{touched && error && <span className="error">{error}</span>}
</div>
</fieldset>
我希望能够使用
更新<fieldset>
className=""
className="has-success"
className="has-danger"
逻辑是:
touched
但没有error
:<fieldset className="has-success">
touched
和error
:<fieldset className="has-danger">
touched
也不是error
:<fieldset className="">
如何在React中使用它?
答案 0 :(得分:1)
你可以像这样实现它:
<fieldset className={touched ? (error ? "has-danger" : "has-success") : ""}>
...
</fieldset>
首先检查touched
是否真实。如果是,则只有当<fieldset>
为真或"has-danger"
时才会呈现error
哪个类为"has-success"
。如果touched
,不存在,则该类为空字符串。这假设不存在touched
为假且error
无效的情况(尽管您可以添加更多来处理该情况)。
如果您发现这有点不可读,可以尝试使用更具可读性的classnames
NPM包:
<fieldset className={classNames({
"": !touched && !error,
"has-danger": touched && error,
"has-success": touched && !error
})}>
...
</fieldset>
这是更具可读性的,并不假设不存在touched
为假且error
是真实的情况。