Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用的Formik字段的重置值_Javascript_Reactjs_Formik_Yup - Fatal编程技术网

Javascript 禁用的Formik字段的重置值

Javascript 禁用的Formik字段的重置值,javascript,reactjs,formik,yup,Javascript,Reactjs,Formik,Yup,我试图在复选框开关被禁用后清除/重置其值。我最初认为我通过使用React条件并将值设置为空字符串实现了这一点,但是如果复选框在被禁用之前已被激活,那么该值仍然会被提交。这种行为似乎不正确,因为我的印象是禁用的输入字段值不会被提交 React条件表示,如果表单被禁用,则复选框的值应为空 我正在使用Formik处理带有Yup模式验证的表单 下面是我的整个表单代码 提前谢谢你 从“axios”导入axios; 从“Yup”导入*作为Yup; 从“下一个/Head”导入Head; 从“下一个/链接”导入

我试图在复选框开关被禁用后清除/重置其值。我最初认为我通过使用React条件并将值设置为空字符串实现了这一点,但是如果复选框在被禁用之前已被激活,那么该值仍然会被提交。这种行为似乎不正确,因为我的印象是禁用的输入字段值不会被提交

React条件表示,如果表单被禁用,则复选框的值应为空

我正在使用Formik处理带有Yup模式验证的表单

下面是我的整个表单代码

提前谢谢你

从“axios”导入axios;
从“Yup”导入*作为Yup;
从“下一个/Head”导入Head;
从“下一个/链接”导入链接;
从“下一个/路由器”导入路由器;
从“react”导入{useState};
从“./组件/错误”导入错误;
从“./组件/布局”导入布局;
从“反应引导/按钮”导入按钮;
从“反应引导/微调器”导入微调器;
从“Formik”导入{Formik,Form,Field,ErrorMessage};
var instagram=false;
var=false;
var-github=false;
const validationSchema=Yup.object({
名字:Yup.string()
.max(15,“必须小于等于15个字符”),
电子邮件:Yup.string().email(“无效电子邮件地址”)。必需(“必需”),
用户名:Yup.string()
.测试(
“有效instagram”,“instagram:只能包含字母数字字符、句点和下划线”,函数(用户名){
var instagramRegex=newregexp(/^(?。*\.\)(?!.*\.$)[^\W][\W.]{0,29}$/);
var instagramRes=instagramRegex.test(用户名)
如果(instagramRes){//如果res为true,则用户名有效,并且可以启用开关
instagram=false;
return true//return true告诉Yup该字段有效
}否则{
instagram=true;
return true//true删除错误消息
}
}
)
.测试(
“有效推特”,“推特:只能包含字母数字字符或下划线”,函数(用户名){
var twitterRegex=newregexp(/^[A-Za-z0-9}{1,15}$/);
var twitterRes=twitterRegex.test(用户名)
如果(twitterRes){//如果res为true,则用户名有效,并且可以启用开关
twitter=false;
return true//return true告诉Yup该字段有效
}否则{
twitter=true;
return true//true删除错误消息
}
}
)
.测试(
“有效github',“github:只能包含字母数字字符或单连字符”,函数(用户名){
var githubRegex=newregexp(/^[a-z\d](?:[a-z\d]|-(?=[a-z\d])){0,38}$/i);
var githubRes=githubRegex.test(用户名)
如果(githubRes){//如果res为true,则用户名有效,并且可以启用开关
github=false;
return true//return true告诉Yup该字段有效
}否则{
github=true;
return true//true删除错误消息
}
}
)
.必需(“必需”),
acceptTerms:Yup.boolean()
.必需(“必需”)
。其中一个([正确],“您必须接受条款和条件。”),
switchGroup:Yup.array().required(“必须至少选择一个选项”),
});
常量初始值={
名字:“,
电邮:“,
用户名:“”,
acceptTerms:false,//为我们的复选框添加
开关组:[],//开关阵列
};
导出默认函数注册(){
const[error,setError]=useState(“”);
返回(
注册-Notify.is
{
常量数据=新的URLSearchParams(值);
const res=等待axios
.post(“http://localhost:8080/api/signup“,数据)
。然后((响应)=>{
路由器。推送(“/谢谢”);
})
.catch((错误)=>{
setError(error.message);
});
设置提交(假);
}}
>
{({触摸,错误,提交})=>(
得到通知
名字
可选的
我们永远不会与其他人共享您的电子邮件。
电子邮件地址
所需的不可用用户名。
用户名
一款图片分享应用
啁啾
github
我们应该检查的服务。
勾选此框表示您同意我们的:
{提交&&(
)}
{提交和提交…}
{!提交并注册}
{错误?:null}

&复制;通知。is 2020

)} {` .显示器-4{ 字号:700; } .条款{ 文字装饰:下划线; } .术语:悬停{ 文字装饰: