>
然后验证表单?
从“React”导入React,{useState,useEffect};
从“yup”导入*为yup;
const formSchema=yup.object()。shape({
ID:yup.string().required(“required”),
姓名:yup
.string()
.min(2, "You name should have 2 characters")
.required("You don't have a name?"),
类型:yup
.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[errors,setErrors]=useState({
id: "",
name: "",
type: "",
value: "",
addOns: "",
});
常量[buttonDisabled,setButtonDisabled]=Ustate(true);
const validate=(e)=>{
常量值=
e.target.type===“checkbox”?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],
});
});
};
//formSubmit函数
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函数
常量handleChange=(e)=>{
e.persist();
setFormState({
...formState,
addOns: [formState.addOns, e.target.value],
});
};
//使用效果函数
useEffect(()=>{
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抱怨的一些房产。
> 导入React,{useState, use效应}从"react"; 从"yup"导入*as yup; const formSchema=yup.object().shape({ id:yup.string().required(“required”), 姓名:是的 类型:是的 值:yup.string().required(“required”), }); const PizzaForm=(
问题内容: 我收到此错误: 我正在使用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依赖关系树是: 但我甚至不知道怎么读… 你能帮忙吗?
我有一组代码,给我一个,即使这部分代码是正确的,但我不知道为什么,但我错过了一些肯定的东西。 回溯显示我在中有错误,它给了我这个错误消息:
问题内容: 当选择menuItem时,尝试关闭当前场景并打开另一个场景时出现问题。我的主要阶段编码如下: 执行该程序后,它将转到cartHomePage.fxml。选择菜单项后,我可以从那里选择创建产品或创建类别。这是我的动作事件: 但是,我只能切换一次舞台。例如,我的默认页面是cartHomePage.fxml。运行程序时,首先要创建产品阶段。在那之后,我不能再去任何地方了。错误消息是: 我关上