>
导入React,{useState, use效应}从"react";
从"yup"导入*as yup;
const formSchema=yup.object().shape({
id:yup.string().required(“required”),
姓名:是的
.string()
.min(2, "You name should have 2 characters")
.required("You don't have a name?"),
类型:是的
.string()
.min(3, "Must be at least 3 characters")
.required("Required"),
值:yup.string().required(“required”),
});
const PizzaForm=()=
//管理窗体的状态
const[formState, setFormState]=useState({
id: "",
name: "",
type: "",
value: "",
addOns: "",
});
const[错误,设置错误]=useState({
id: "",
name: "",
type: "",
value: "",
addOns: "",
});
const[buttonDisabled,setButtonDisabled]=useState(true);
常量验证=(e)=
常数值=
e、 target.type==“复选框”?e、 target.checked:e.target.name;
yup
.reach(formSchema, e.target.name)
.validate(e.target.value)
.then((valid) => {
setErrors({
...errors,
[e.target.name]: "",
});
})
.catch((err) => {
setErrors({
...errors,
[e.target.name]: err.errors[0],
});
});
};
//表单提交功能
const formSubmit=(e)=
e.preventDefault();
console.log("form submitted!", formState);
};
//onChange函数
const onChange=(e)=
e.persist();
validate(e); /*something wrong here, crashes when a radio is selected*/
console.log(e.target.value, e.target.checked);
const value = e.target.type === "radio" ? e.target.checked :
e.target.value;
setFormState({ ...formState, [e.target.name]: value });
};
//handleChange函数
常量句柄=(e)=
e.persist();
setFormState({
...formState,
addOns: [formState.addOns, e.target.value],
});
};
//使用效果函数
使用效果()=
formSchema.isValid(formState).then((valid) => {
setButtonDisabled(!valid);
});
},[formState]);
返回(
<div>
<form onSubmit={formSubmit}>
<label htmlFor="name">
Name Your Pizza:
<input
type="text"
name="name"
id="name"
placeholder="Save for future orders!"
value={formState.name}
onChange={onChange}
/>
{errors.name.length > 0 ? (
<p className="error">{errors.name}</p>
) : null}
</label>
<h1> Build Your Own Pizza! </h1>
<label htmlFor="size">
<h3> What Size Pizza? </h3>
Pizza Size:
<select id="psize" name="psize">
<option value="Small">Small</option>
<option value="Medium">Medium</option>
<option value="Large">Large</option>
<option value="Extralarge">Extra Large</option>
</select>
</label>
<h3> Select Your Sauce: </h3>
<label htmlFor="redsauce" className="redsauce">
<input
type="radio"
name="redsauce"
value={formState.name}
onChange={onChange}
/>
Original Red
</label>
<label htmlFor="garlic" className="garlic">
<input
type="radio"
name="garlic"
value={formState.name}
onChange={onChange}
/>
Garlic Ranch
</label>
<label htmlFor="bbq" className="bbq">
<input
type="radio"
name="bbq"
value={formState.name}
onChange={onChange}
/>
BBQ Sauce
</label>
<label htmlFor="spinach" className="spinach">
<input
type="radio"
name="spinach"
value={formState.name}
onChange={onChange}
/>
Spinach Alfredo
</label>
<h3> Select Your Toppings: </h3>
<label htmlFor="toppings">
Toppings: Plain
<input
id="toppings1"
type="checkbox"
name="addOns"
value={formState.name}
onChange={handleChange}
/>
<h3> Select Your Cheese: </h3>
Chedder
<input
id="toppings2"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
Cheese
<input
id="toppings3"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
Three Cheese
<input
id="toppings4"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
ExtraCheese
<input
id="toppings5"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
<h3> Select Your Meat: </h3>
Pepporoni
<input
id="toppings6"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
Sausage
<input
id="toppings7"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
Canadian Bacon
<input
id="toppings8"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
Spicy Italian Sausage
<input
id="toppings9"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
GrilledChicken
<input
id="toppings10"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
<h3> Select Other Toppings: </h3>
Onions
<input
id="toppings11"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
Green Peppers
<input
id="toppings12"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
Diced Tomatoes
<input
id="toppings13"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
Black Olives
<input
id="toppings14"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
Roasted Garlic
<input
id="toppings15"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
Artichoke Hearts
<input
id="toppings16"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
Pineapple
<input
id="toppings17"
type="checkbox"
name="addOns"
onChange={handleChange}
/>
</label>
<h3>Any Special Instructions?</h3>
<label htmlFor="instructions">
Special Instructions:
<textarea name="instructions" />
</label>
<button disabled={buttonDisabled}>Submit</button>
</form>
</div>
); };
导出默认PizzaForm;
const formSchema = yup.object().shape({
id: yup.string().required("Required"),
name: yup.string().min(2, "You name should have 2 characters")
.required("You don't have a name?"),
type: yup.string().min(3, "Must be at least 3 characters").required("Required"),
value: yup.string().required("Required"),
});
您的模式如下所示。我已经在代码中修复了这个错误,添加了yup抱怨的属性,并根据错误抛出的类型定义了它的类型。在您的例子中,它是object类型的“菠菜”
因此,在您的yup模式中添加以下行:
spinach: yup.object()
如果您认为需要,请按要求设置
spinach: yup.object().required("Required"),
表单包含此字段,而yup架构不包含此字段。
通常我没有注意到模式中需要列出所有属性名。我犯这个错误的时候是在两个模式之间切换以提交完整对象或草稿版本。草稿中没有列出yup抱怨的某些属性。
> 这是披萨表单。 单击收音机选择酱汁时,页面崩溃。 用户需要为订单命名。 则只能选择1种酱料。 然后选择浇头 然后提交。 应该只能在“名称”字段和所选内容被选中后提交。 然后验证表单? 从“React”导入React,{useState,useEffect}; 从“yup”导入*为yup; const formSchema=yup.object()。shape({ ID:yup.string()
问题内容: 我收到此错误: 我正在使用Tomcat 6作为Web服务器。我有两个HTTPS Web应用程序安装在不同端口上但在同一台机器上的不同Tomcat上。说App1(port 8443)和 App2(port 443)。App1连接到App2。当App1连接到App2我得到以上错误。我知道这是一个非常常见的错误,因此在不同的论坛和站点上遇到了许多解决方案。我在server.xml两个Tomc
我已经安装了反应原生使用:: 一切正常,直到我安装和NPM包。我创建了三个页面没有安装新包。当我安装矢量图标为反应本机使用:: 命令下达后,我收到很多警告: npm警告反应本地安全区-view@0.11.0需要react native@*的对等方,但未安装任何对等方。您必须自己安装对等依赖项。 npm警告反应导航-stack@0.6.0需要react native@*的对等方,但未安装任何对等方。
当尝试运行gradle构建时,我得到了这个错误 我理解这是一个版本冲突,但不确定如何解决,以及哪个版本 要排除的版本。。。 gradle依赖关系树是: 但我甚至不知道怎么读… 你能帮忙吗?
当我试图在mLab上查询mongo实例时出错。我从Spring启动应用程序中请求它。到数据库的连接是稳定的。下面是控制台的日志。 监控线程成功连接到服务器,说明服务器描述{地址=ds131531.mlab.com:31531,类型=REPLICA_SET_PRIMARY,状态=CONNECTED,ok=true,version=ServerVersion{versionList=[3,4,15]}
我有一个Android应用程序,当我运行以下命令时,它的构建失败: 以下是我收到的错误: