如何将 Formik 与带有点“。”的输入名称一起使用?
How to use Formik with input names that have dots "."?
我无法handleChange
更新带有点“.”的输入。在名字里。有人解决了吗?
<Formik component={({
handleSubmit,
handleChange,
handleBlur,
values,
errors,
}) => (
<form onSubmit={handleSubmit}>
<input
type="text"
onChange={handleChange}
onBlur={handleBlur}
value={values['name.of.input']}
name="name.of.input"
/>
{errors['name.of.input'] && <div>{errors['name.of.input']}</div>}
<button type="submit">Submit</button>
</form>
)} />;
编辑:这是有效的重构版本
<Formik component={({
initialValues={{
name: {
of: {
input: ''
}
}
}},
handleSubmit,
handleChange,
handleBlur,
values,
errors,
}) => (
<form onSubmit={handleSubmit}>
<input
type="text"
onChange={handleChange}
onBlur={handleBlur}
value={values.name.of.input}
name="name.of.input"
/>
{getIn(errors, 'name.of.input') && <div>getIn(errors, 'name.of.input')</div>}
<button type="submit">Submit</button>
</form>
)} />;
您应该使用 getIn
,您可以在文档 here and here 中查看示例。
const inputValue = getIn(values, 'name.of.input')
const inputError = getIn(errors, 'name.of.input')
const inputTouched = getIn(touched, 'name.of.input')
name.of.input
表示您的 Formik 状态应该具有如下形状:
{
name: {
of: {
input: ''
}
}
}
现在您从 Formik 获得的值也将具有相同的形状,因此要从值中获取值,您需要执行以下操作:
values={values.name.of.input}
我无法handleChange
更新带有点“.”的输入。在名字里。有人解决了吗?
<Formik component={({
handleSubmit,
handleChange,
handleBlur,
values,
errors,
}) => (
<form onSubmit={handleSubmit}>
<input
type="text"
onChange={handleChange}
onBlur={handleBlur}
value={values['name.of.input']}
name="name.of.input"
/>
{errors['name.of.input'] && <div>{errors['name.of.input']}</div>}
<button type="submit">Submit</button>
</form>
)} />;
编辑:这是有效的重构版本
<Formik component={({
initialValues={{
name: {
of: {
input: ''
}
}
}},
handleSubmit,
handleChange,
handleBlur,
values,
errors,
}) => (
<form onSubmit={handleSubmit}>
<input
type="text"
onChange={handleChange}
onBlur={handleBlur}
value={values.name.of.input}
name="name.of.input"
/>
{getIn(errors, 'name.of.input') && <div>getIn(errors, 'name.of.input')</div>}
<button type="submit">Submit</button>
</form>
)} />;
您应该使用 getIn
,您可以在文档 here and here 中查看示例。
const inputValue = getIn(values, 'name.of.input')
const inputError = getIn(errors, 'name.of.input')
const inputTouched = getIn(touched, 'name.of.input')
name.of.input
表示您的 Formik 状态应该具有如下形状:
{
name: {
of: {
input: ''
}
}
}
现在您从 Formik 获得的值也将具有相同的形状,因此要从值中获取值,您需要执行以下操作:
values={values.name.of.input}