2017-08-15 8 views
0

私はreduxsとredux-formを併用しています。フォームを送信する際に入力をクリアできません

セマンティックUIを使用して、ライブラリ

私は自分のフォームを送信したい場合は、私は私のページをリフレッシュする必要はありませんが反応します。代わりに、投稿後に私のフォームをリセットしたい。

残念ながら、値を無効にするように状態を設定している間は、入力をクリアできません。

/** Form component **/ 
 

 
<Form onSubmit={handleSubmit(this.handleSubmitAction)}> 
 
     <Field name="input" component={renderTitleInput} onChangeAction={this.handleInputChange} defaultValue={this.state.input} /> 
 
      <input type="submit" name="submit" /> 
 
     </Form> 
 
     
 
     
 
     
 
/** HandleSubmit function **/ 
 

 
handleSubmitAction = (e) => { 
 
    this.setState({input:''}) 
 
}

フィールドは、フォームを送信した後に充填されたまま。

提案がありますか?ありがとう

+0

私はsemantic UIがどのように動作するのか分かりませんが、フィールドの 'defaultValue'を変更しています。 'input'の値を' this.state.input'に設定してください。 'defaultValue'ではなく、' Field'コンポーネントの 'value'に値を設定してください。 –

+0

ありがとうございます。それは解決されました。あなたは正しいです、 'value'は' defaultValue'よりも適切ですが、 'Field'コンポーネントは' value'属性を認識しないので、カスタム 'fieldValue'属性で渡す必要があります。 –

答えて

0

あなたが作成したものは制御されていないコンポーネントです。つまり、更新はDOMを介して処理する必要があります。これを行うには、ref属性を追加して、フォーム送信コールバックのDOM要素にアクセスする必要があります。ここにあなたが必要とする変更があります。

<Form onSubmit={handleSubmit(this.handleSubmitAction)}> 
    <Field name="input" component={renderTitleInput} onChangeAction={this.handleInputChange} defaultValue={this.state.input} ref={(input) => this.input = input} /> 
     <input type="submit" name="submit" /> 
</Form> 
/** HandleSubmit function **/ 

handleSubmitAction = (e) => { 
    // This can be used when using controlled component. 
    //this.setState({input:''}) 
    this.input.val = ''; 
} 

しかし、おそらくあなたが望むのは、controlled componentとして扱うことです。

+0

ありがとうございます。私はこの問題を解決しました。上記の詳細。 –

関連する問題