我知道Field
有一个onChange
属性,您可以在此处传递自己的Formik onChange
道具:https://jaredpalmer.com/formik/docs/api/formik#handlechange-e-reactchangeevent-any-void。
但是,我正在努力了解这些value[key]
的传递位置,因此我可以处理以表格形式传递的数据。在withFormik(): How to use handleChange中发现,我可以将两个回调传递给Formik的onChange
道具,但是我想知道是否有更好的方法来处理这个问题。
编辑人们的评论后进行回复,谢谢:
我的代码在Field
的onChange属性中使用了这两个回调:
export default function FormikForm() {
const onSubmitHandler = (formValues, actions) => {
console.log(formValues);
console.log(actions);
};
const onChangeHandler = (e) => {
console.log(e.target.value);
};
return (
<div>
<h1>This is the Formik Form</h1>
<Formik
initialValues={{
name: "",
email: "",
age: ""
}}
onSubmit={onSubmitHandler}
render={props => {
return (
<Form>
<label>
Name
<Field
name="name"
type="text"
placeholder="name"
onChange={e => {props.handleChange(e); onChangeHandler(e)}}
/>
</label>
<button type="submit">Submit</button>
</Form>
);
}}
/>
</div>
);
}
是否有一种方法可以像onSubmitHandler
中那样做,Formik自动地输出输入的值,而不必在onChange
中调用这两个函数?
谢谢
答案 0 :(得分:0)
每个字段组件都会收到一个field prop,其中有一个form
道具,其中包含该字段的值,以及一个form.setFieldValue(field.name, field.value)
道具,它包含可用于设置值的辅助方法。我需要查看代码的结构以提供有关如何实现所需功能的具体建议,但是您可以通过调用field
来仿真默认功能。另外,field.onChange
道具在{{1}}道具中默认内置了此处理程序。