2017-07-15 4 views
0

私はUniformsを使用して、自分のプロジェクトのフォーム提出を作成しています。フォームをクリアしながら私のデータベースに提出するフォームが必要です。私はonSubmitをどちらか一方にすることができますが、私はこれらの両方を持つことはできません。両方を登録するプログラムを取得する最善のルートは何ですか?ここに私の<Autoform/>タグのonSubmitアクションでのconst反応しています:あなたは絶望にフォームから値を格納し、その後からクリアし、最終的にオブジェクトを提出することができるReactでは、どのようにしてonSubmitが2つのアクションをとることが可能ですか?

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; 

答えて

0

が、この場合には、あなたはしません送信機能を使用する必要があり、送信を行うカスタム関数を実装する必要があります。

+0

私はまだReactでは新しいですが、コード例で回答を更新することはできますか?私はコンセプトを把握していると思いますが、実際にそれが役に立つことは分かります!ありがとうございました:) –

0
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; 
+0

okは少しあなたを変えなければなりませんでしたが、それを得ました!私は理由を知ることはできませんが、 'onSubmit'の関数の' doc => '関数を矢印にしなければなりませんでした(あなたが説明できる方法であれば)?そして、関数を戻り値の上に移動し、 formRef'の定義です。コードが正しいと答えを正しくマークします。 –

+0

通常、矢印function.so内で2つの関数呼び出しを実行することはできません。別々の関数を持つ方がよいでしょう。複数の呼び出しを実行することができます。 – codegeek

+0

私はちょうどあなたが最初に持っていたものを置くのではなく、 'doc => handleSubmission(doc)'の矢印機能がなぜ必要なのか、ちょっと混乱していたと思います。だから、私はその情報がそのdoc変数に設定されていると思いますし、関数によって渡されるようにしていますか? –

関連する問題