Formik 和 Semanic UI React。打字延迟、不必要的验证

And*_*nko 6 reactjs semantic-ui-react formik

这是我的动态表单的一个简单示例。

<Form.Group widths='equal'>
                    <Form.Input onChange={props.handleChange} fluid name={`${type}.${participant.number}.firstName`}
                                label={FIRST_NAME}
                                placeholder={FIRST_NAME_MODEL_DESCR}/>
                    <Form.Input onChange={props.handleChange} fluid label={LAST_NAME}
                                name={`${type}.${participant.number}.lastName`}
                                placeholder={LAST_NAME_MODEL_DESCR}/>
       </Form.Group>
Run Code Online (Sandbox Code Playgroud)

在 Fromik 本身中,我有简单的 console.log

    validate={values => {
        console.log(values);
    }}
Run Code Online (Sandbox Code Playgroud)

因此,每次当我在字段中输入内容时,每次按下按键时,我都会从验证中获取日志结果(我不想要),并且每次按下按键时都会有微延迟。

TLa*_*add 3

将 validateOnChange(以及 validateOnBlur,如果您也想禁用它)传递给 Formik 组件( https://jaredpalmer.com/formik/docs/api/formik#validateonchange-boolean),值为 false

  • 是的,它确实如此,因为 Formik 保存表单的状态,而表单的其余部分是子组件,当父组件重新渲染时,它的所有子组件也会重新渲染,除非 shouldComponentUpdate 在组件树中的某个位置返回 false。因此,如果您需要防止部分表单重新渲染(通常没有必要,除非您有更大的表单),请将表单字段拆分为单独的组件,并使用 PureComponent 来防止组件的 props 不会从重新渲染更改。 - 渲染。 (2认同)