我真的很想弄清楚为什么这是一个设计选择以及它如何不再是一个问题。
我有一个包含多个输入的表单,当我开始在任何字段中输入时,整个表单将根据我的验证函数进行验证,从而导致每个验证错误消息都呈现到我的表单上。
该表单甚至没有做任何神奇的事情,我实际上只是接受基本文本输入并验证值是否为空。然而,当我这样做时,福米克认为验证每个领域都是一个好主意,包括我尚未触及的原始领域。
有人可以向我解释一下如何更改此行为,以便仅验证当前触发 onChange 事件的表单吗?
我尝试使用表单的触摸对象来检查哪些尚未触摸,并且仅验证触摸的对象,但这会产生更多问题,特别是在尝试提交表单时。
validateOnChange 和 validateOnBlur 也没有帮助,它们只是关闭验证
再说一次,为什么这是默认行为。谁会希望基于 onChange 事件立即验证整个表单?
我什至尝试使用代替进行字段级验证,甚至会产生相同的行为?我真的不知道如何用这个来制作工作表格。显然人们会这样做,所以如果有人能够逐个领域地解释如何做到这一点,我将非常感激。
const formik = useFormik({
initialValues: {
positionTitle: "",
experienceRequired: ""
},
onSubmit: (values) => {
console.log("Form output: ", JSON.stringify(values));
console.log("Errors: ", formik.errors);
},
isInitialValid: false,
validate: validate
validateOnMount: false,
validateOnChange: false,
validateOnBlur: false
});
<FormikProvider value={formik}>
<form onSubmit={formik.handleSubmit} className="flex flex-col mt-4">
<Field
as="input"
validate={validateBasicRequired}
name="positionTitle"
onChange={formik.handleChange}
value={formik.values.positionTitle}
></Field>
{formik.errors.positionTitle &&
formik.errors.positionTitle === "Required" && (
<BasicValidationError message="Required field."></BasicValidationError>
)}
<Select
name="experienceRequired"
onChange={handleSelectOnChange}
options={getMultiSelectOptions(experienceValues)}
></Select>
{formik.errors.experienceRequired …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用该[ProducesResponseType]属性来装饰 Swagger 中的 API 端点。但是,我有返回状态代码而不返回其他内容的端点,我希望我的 Swagger 文档能够反映这一点。
问题是我找不到一种方法让 swagger 代表 void 返回类型。
执行类似[ProducesResponseType(StatusCodes.Status400BadRequest)]不带类型参数的操作会导致 swagger 生成示例返回类型
{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"additionalProp1": {},
"additionalProp2": {},
"additionalProp3": {}
}
Run Code Online (Sandbox Code Playgroud)
我不想要这个。
我尝试过的其他一些事情包括:
[ProducesResponseType(typeof(void), StatusCodes.Status400BadRequest)] //Produces the same example return type
[ProducesResponseType(null, StatusCodes.Status400BadRequest)] //Runtime error, value can't be null
Run Code Online (Sandbox Code Playgroud) 我一直在关注这里的教程,直到我必须运行服务器的部分为止都很好:https : //www.digitalocean.com/community/tutorials/setting-up-a-node-project-with-打字稿
如果我尝试运行下面的代码,我会得到 server is listening on undefined
const app = express();
const port = 8080;
app.get("/", (req, res) => {
res.send("Hello");
})
app.listen((port, err) => {
if (err) {
return console.error(err);
}
return console.log(`server is listening on ${port}`);
});
Run Code Online (Sandbox Code Playgroud)
我什至尝试使用预先设置端口 app.set('port', port);
const app = express();
const port = 8080;
app.set('port', port);
app.get("/", (req, res) => {
res.send("Hello");
})
app.listen((port, err) => {
if (err) {
return console.error(err);
}
return console.log(`server is listening on ${port}`);
});
Run Code Online (Sandbox Code Playgroud)
但同样的事情也会发生。