reactjs - 取消选中复选框重置输入(ReactJS + Formik)
问题描述
如果选中了一个复选框,我制作了这个组件来创建一个字段,但是如果我写了一些东西然后取消选中,我该如何重置这个字段值?
const InputCheckbox = ({name, size}) => {
const [checkAmount, setCheckAmount] = useState(false);
return(
<div>
<label htmlFor={size}>
<Field type="checkbox" name={name} value={size} onClick={()=> {checkAmount === false ? setCheckAmount(true) : setCheckAmount(false)}} />
{size}
</label>
{checkAmount === false ? null : <div className="form-control-amount">
<label htmlFor={`sizeamount.${size}`}>{size}</label>
<Field className="form-control-amount" type="number" name={`sizeamount.${size}`} />
</div>}
</div>
)
}
解决方案
当复选框未选中时,您可以使用 Formik 的setFieldValue
功能重置字段。
您的组件:
const InputCheckbox = ({name, size, setFieldValue }) => {
const [checkAmount, setCheckAmount] = useState(false);
return(
<div>
<label htmlFor={size}>
<Field type="checkbox" name={name} checked={checkAmount} value={size} onClick={()=> {checkAmount === false ? setCheckAmount(true) : setCheckAmount(false); setFieldValue(`sizeamount.${size}`, '')}} />
{size}
</label>
{checkAmount === false ? null : <div className="form-control-amount">
<label htmlFor={`sizeamount.${size}`}>{size}</label>
<Field className="form-control-amount" type="number" name={`sizeamount.${size}`} />
</div>}
</div>
)
}
用法:
<Formik
initialValues={{
check: true
}}
onSubmit={(values, actions) => {
alert('Form has been submitted');
actions.setSubmitting(false);
}}
>
{({setFieldValue}) => (
<Form>
<InputCheckbox name="check" size={10} setFieldValue ={setFieldValue} />
<button type="submit">Submit</button>
</Form>
)}
</Formik>
推荐阅读
- php - 将数据库连接放在单独的文件中后,Mysqli real_escape_string 验证不起作用
- javascript - 在 html nodemailer 中输出 base64 图像
- c# - 在 ASP.NET MVC 中的上传文件中使用 TempData
- r - 将来不会使用嵌套计划(多会话)释放内存
- r - 如何保存我训练有素的随机森林模型并将其一一应用于测试数据文件?
- python - Tkinter 实时动画
- python - 将列分配给层次更高的多索引级别
- javascript - 如何在 JavaScript 中将字符串参数转换为 Object 类型?
- python - 如何在 jupyter notebook 的代码中删除几个空行?
- android - 使用作业服务获取当前 SSID