Reactjs 提交时如何获取Formik初始值?
我是Formik新手,不知道如何在提交处理程序中访问Reactjs 提交时如何获取Formik初始值?,reactjs,formik,Reactjs,Formik,我是Formik新手,不知道如何在提交处理程序中访问初始值,以便在提交之前将其与值进行比较 如果有人能在下面的基本Formik示例中演示这是如何实现的,我会很高兴 const Basic = () => ( <div> <h1>Sign Up</h1> <Formik initialValues={{ firstName: '', lastName: '', email
初始值
,以便在提交之前将其与值进行比较
如果有人能在下面的基本Formik示例中演示这是如何实现的,我会很高兴
const Basic = () => (
<div>
<h1>Sign Up</h1>
<Formik
initialValues={{
firstName: '',
lastName: '',
email: '',
}}
onSubmit={async (values) => {
await new Promise((r) => setTimeout(r, 500));
// GET initialValues HERE...
alert(JSON.stringify(values, null, 2));
}}
>
<Form>
<label htmlFor="firstName">First Name</label>
<Field id="firstName" name="firstName" placeholder="Jane" />
<label htmlFor="lastName">Last Name</label>
<Field id="lastName" name="lastName" placeholder="Doe" />
<label htmlFor="email">Email</label>
<Field
id="email"
name="email"
placeholder="jane@acme.com"
type="email"
/>
<button type="submit">Submit</button>
</Form>
</Formik>
</div>
);
ReactDOM.render(<Basic />, document.getElementById('root'));
const Basic=()=>(
注册
{
等待新的承诺((r)=>setTimeout(r,500));
//在这里获取初始值。。。
警报(JSON.stringify(值,null,2));
}}
>
名字
姓
电子邮件
提交
);
ReactDOM.render(,document.getElementById('root'));
我知道有几个线程在那里解释如何使用HOCs等,但我的React知识太少,无法将其转换为上面的基本功能。FWIW我也认为在Formik文档中以此为例是有益的,这似乎是一个非常常见的用例。您可以在组件中声明一个对象,并将其传递给Formik initialValues prop
const Basic=()=>{
常量初始值={
名字:'',
姓氏:“”,
电子邮件:“”,
};
返回(
注册
{
//比较初始值和此处的值
}}
>
名字
姓
电子邮件
提交
);
};
ReactDOM.render(,document.getElementById('root'));
我发现这个答案与您想要的非常接近:
const Basic = () => {
const initialValues = {
firstName: '',
lastName: '',
email: '',
};
return (
<div>
<h1>Sign Up</h1>
<Formik
initialValues={initialValues}
onSubmit={async (values) => {
// compare initialValues and values here
}}
>
<Form>
<label htmlFor="firstName">First Name</label>
<Field id="firstName" name="firstName" placeholder="Jane" />
<label htmlFor="lastName">Last Name</label>
<Field id="lastName" name="lastName" placeholder="Doe" />
<label htmlFor="email">Email</label>
<Field
id="email"
name="email"
placeholder="jane@acme.com"
type="email"
/>
<button type="submit">Submit</button>
</Form>
</Formik>
</div>
);
};
ReactDOM.render(<Basic />, document.getElementById('root'));