我有一个用Formik编写的表格。我需要根据“选择”字段中选择的值(选项)来显示/隐藏“文本”字段。我怎样才能做到这一点?
<Formik
initialValues={{transactionCategory, name}}
onSubmit={this.onSubmit}
validateOnChange={false}
validateOnBlur={false}
validate={this.validate}
enableReinitialize={true}
>
{
(props) => (
<Form>
<fieldset className="form-group">
<label>Category</label>
<Field name="transactionCategory" component="select">
<option value="Admission">Admission</option>
<option value="Class_Fee">Class Fee</option>
<option value="Staff_Payment">Staff Payment</option>
<option value="Other">Other</option>
</Field>
</fieldset>
<fieldset className="form-group">
<label>Name</label>
<Field className="form-control" type="text" name="name"/>
</fieldset>
<button className="btn btn-success" type="submit">Save</button>
<button type="reset" className="btn btn-secondary">Reset</button>
</Form>
)
}
</Formik>
当我从“类别”选项中选择“其他”值时,“名称”字段应隐藏。
答案 0 :(得分:2)
根据选项的选定值编写选项的onSelect / onchange事件。更新状态字段。
this.setState({isName:true})
现在您可以在条件渲染中使用this.state.isName来显示和隐藏字段。
答案 1 :(得分:2)
使用transactionCategory
值有条件地渲染名称字段
<Formik
initialValues={{ transactionCategory, name }}
onSubmit={this.onSubmit}
validateOnChange={false}
validateOnBlur={false}
validate={this.validate}
enableReinitialize={true}
>
{props => (
<Form>
<fieldset className="form-group">
<label>Category</label>
<Field name="transactionCategory" component="select">
<option value="Admission">Admission</option>
<option value="Class_Fee">Class Fee</option>
<option value="Staff_Payment">Staff Payment</option>
<option value="Other">Other</option>
</Field>
</fieldset>
{props.values.transactionCategory !== "Other" && (
<fieldset className="form-group">
<label>Name</label>
<Field className="form-control" type="text" name="name" />
</fieldset>
)}
<button className="btn btn-success" type="submit">
Save
</button>
<button type="reset" className="btn btn-secondary">
Reset
</button>
</Form>
)}
</Formik>;