在React中,如何使onSubmit执行两个操作?
我正在使用Uniforms为我的项目创建表单提交。我需要将表单提交给我的数据库,同时还要清除表单。我可以让onSubmit做一个或另一个,但似乎我不能拥有这两个。什么是让程序注册两者的最佳途径?这里是我的阵营常量与上<Autoform/>
标签onSubmit
行动:在React中,如何使onSubmit执行两个操作?
const UniformsHello =() => {
let formRef;
return(
<div>
<h1>Submit a track</h1>
<AutoForm
ref={ref => formRef = ref}
schema={PostSchema}
onSubmit={((doc => Submissions.insert(doc)) & (() => formRef.reset()))}
placeholder={true}>
<AutoField name="Song name" />
<AutoField name="Album title" />
<AutoField name="Soundcloud URL" />
<LongTextField name="Story" />
<div className="super-special-class">
<SubmitField className="super-special-class-with-suffix" />
</div>
</AutoForm>
</div>
);
}
export default UniformsHello;
您可以存储在一个下贱的表单中的值,然后从清除最后提交的对象,但在这种情况下,你不会使用提交功能,您必须实现提交的自定义功能。
const UniformsHello =() => {
let formRef;
return(
function handleSubmission(doc,formRef){
Submissions.insert(doc);
formRef.reset();
}
<div>
<h1>Submit a track</h1>
<AutoForm
ref={ref => formRef = ref}
schema={PostSchema}
onSubmit={handleSubmission(doc,formRef)}
placeholder={true}>
<AutoField name="Song name" />
<AutoField name="Album title" />
<AutoField name="Soundcloud URL" />
<LongTextField name="Story" />
<div className="super-special-class">
<SubmitField className="super-special-class-with-suffix" />
</div>
</AutoForm>
</div>
);
}
export default UniformsHello;
确定不得不改变你的一点点,但明白了!所以我不明白为什么,但我不得不在'onSubmit'函数中使用'doc =>'函数(任何你可以解释的方法?),然后我必须将函数移动到返回值上方并在' formRef'定义。一旦代码正确,我会将答案标记为正确 –
通常你不能在一个箭头函数内运行两个函数调用。因此,最好有一个单独的函数,它有多个调用来执行。 – codegeek
我想我只是对为什么需要'doc => handleSubmission(doc)'的箭头函数感到困惑,而不是简单地把你的东西放在第一位。所以我猜这些信息是在doc变量中设置的,我们允许它通过函数传递? –
我还是比较新的React,你能用代码示例更新你的答案吗?我认为我会理解这个概念,但看到它在行动中会非常有帮助!谢谢:) –