有一个基本的形式:
<Formik
initialValues={{ email: '', color: 'red', firstName: '' }}
onSubmit={(values, actions) => {
setTimeout(() => {
alert(JSON.stringify(values, null, 2));
actions.setSubmitting(false);
}, 1000);
}}
render={props => (
<form onSubmit={props.handleSubmit}>
<Field type="email" name="email" placeholder="Email" />
<div>other inputs ... </div>
<button type="submit">Submit</button>
</form>
)}
/>
当其中的任何输入发生变化时(不是提交,而是变化)-我需要更新<Formik />
之外的另一个组件。“外部”组件应该接收所有表单数据。
有没有什么方法可以做到这一点,而不需要为表单的每个单独输入添加单独的更改处理程序?或者解决方案是尝试在<Formik />
内部插入“外部”组件?
3条答案
按热度按时间isr3a4wc1#
Formik
提供了values
对象,您可以使用它来获取外部值。codesandbox中的工作演示**here**
pcww981p2#
你不应该在组件的渲染周期中调用
setState
,正如建议的那样:相反,您应该调用
setState
作为副作用。更详细但更好的解决方案是:hyrbngr73#