小编jm1*_*456的帖子

当触发单个输入 onChange 时,为什么 Formik 会验证每个输入(包括原始输入)?

我真的很想弄清楚为什么这是一个设计选择以及它如何不再是一个问题。

我有一个包含多个输入的表单,当我开始在任何字段中输入时,整个表单将根据我的验证函数进行验证,从而导致每个验证错误消息都呈现到我的表单上。

该表单甚至没有做任何神奇的事情,我实际上只是接受基本文本输入并验证值是否为空。然而,当我这样做时,福米克认为验证每个领域都是一个好主意,包括我尚未触及的原始领域。

有人可以向我解释一下如何更改此行为,以便仅验证当前触发 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)

reactjs formik

7
推荐指数
0
解决办法
4517
查看次数

无论如何,是否可以使用 ProducesResponseType 属性和 swagger 来表示 void 返回类型?

我正在尝试使用该[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)

c# asp.net swagger

5
推荐指数
0
解决办法
1377
查看次数

使用“node”运行时,Express 端口未定义。

我一直在关注这里的教程,直到我必须运行服务器的部分为止都很好: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)

但同样的事情也会发生。

javascript node.js npm express

1
推荐指数
1
解决办法
812
查看次数

标签 统计

asp.net ×1

c# ×1

express ×1

formik ×1

javascript ×1

node.js ×1

npm ×1

reactjs ×1

swagger ×1