gpt4 book ai didi

javascript - 在formik中,速记输入字段不起作用

转载 作者:行者123 更新时间:2023-12-02 22:38:11 25 4
gpt4 key购买 nike

在 Formik 中,我尝试在输入字段上使用 {...formik.getFieldProps('email')}而不是使用 value、onChange 和 onBlur。但它不起作用。

这有效:

<input id="email" name="email" type="text" value={formik.values.email} onChange={formik.handleChange} onBlur={formik.handleBlur} />

但这不是:

<input id="email" type="text" {...formik.getFieldProps("email")} />

代码在这里:https://codesandbox.io/s/formik-pb-with-getfieldprops-83tze?fontsize=14

有什么想法吗?谢谢!

最佳答案

正如 MiDas 所说,如果您使用的是最新版本,您所做的事情应该有效。

我会提到一个更简洁的替代方案:Field组件。

字段组件为您处理字段属性传播。

简单的例子:

<Field name="email" type="text" />

请注意,您不需要执行 {...formik.getFieldProps("email")} 或任何其他“样板文件”。

<小时/>

Field 相关的是 useField,它可用于使自定义表单组件同样易于使用 - 无需“样板”。

自定义组件:

function TextInputWithLabel({ label, ...props }) {
// useField() returns [formik.getFieldProps(), formik.getFieldMeta()]
// which we can spread on <input> and also replace ErrorMessage entirely.
const [field, meta] = useField(props);
return (
<>
<label
htmlFor={props.id || props.name}
css={{ backgroundColor: props.backgroundColor }}
>
{label}
</label>
<input className="text-input" {...field} type="text" {...props} />
{meta.touched && meta.error ? (
<div className="error">{meta.error}</div>
) : null}
</>
);
}

用法:

<TextInputWithLabel name="input1" label="Random comment" />

code from codesandbox中所示.

关于javascript - 在formik中,速记输入字段不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58675463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com