【发布时间】:2019-10-29 23:53:57
【问题描述】:
关于这个问题的 GitHub 讨论 - https://github.com/jaredpalmer/formik/issues/529
我将formik 值传递给在<Field/> 的onChange 中调用的函数,但是当我输入<Field/> 时,最后一个字符不属于该函数。
代码沙盒 - link
截图:
最小代码实例:
import React from "react";
import ReactDOM from "react-dom";
import { Formik, Form, Field, FieldArray } from "formik";
function App() {
//------ HERE ----------
const getValues = values => console.log(values.fields[0]);
//----------------------
return (
<>
<Formik
initialValues={{ fields: [""] }}
onSubmit={(values, actions) => {
actions.setSubmitting(false);
console.log(values);
return false;
}}
render={({ setFieldValue, values }) => (
<Form>
<FieldArray
name="fields"
render={() => (
<Field
type="text"
name="fields.0"
placeholder="Write something"
onChange={e => {
setFieldValue("fields.0", e.target.value);
//---------------
getValues(values);
//---------------
}}
/>
)}
/>
</Form>
)}
/>
</>
);
}
ReactDOM.render(<App />, document.getElementById("root"));
【问题讨论】:
-
我认为这是 setFieldValue 的问题。见github.com/jaredpalmer/formik/issues/529。它在内部使用 setState,但不返回回调,我们可以在其中调用另一个函数,就像 setState 一样。该页面中的建议不适用于您链接的 codeSandbox。如果此要求必不可少,您可能必须考虑拥有自己的状态来管理该输入。
标签: javascript html reactjs formik