還元型asyncValidation
は素晴らしいですが、ぼかしでのみ機能します。キーを押している間に起こるようにすることは可能ですか?したがって、それは300msごとに実行され、最終的な値になりますか?キーストロークの非同期バリデーション(ボケではない)
答えて
可能ですか?短い答えは「はい」です。
トリッキーですか?さて、あなたが言及したように、redux-form
オプションのasyncValidation
は、onBlur
の場合にのみ機能し、代わりにonChange
を使用したいと思っています。
あなたがこれを行うことができますので、あなたは、redux-form
にこの機能をフォークして追加することができます。
@reduxForm({
form: 'login',
asyncValidate: validator,
//asyncBlurFields: ['username','password'],
asyncChangeFields: ['username','password'], /* add this new option */
})
deboucingの部分については、あなたが、何らかの形ではなく、検証関数自体よりもonChange
ハンドラをデバウンスしたいと思います別のオプションが表示されます...
redux-form
は、それを一緒にハックするのに十分かもしれない内部アクションクリエイターをエクスポートします。特にフィールドレベルの非同期エラーをフォームに直接渡すことができるアクション作成者はstopAsyncValidation
です。 Field
ためonChange
小道具、として、あなたが実際に右の部分を持っているペアは、それは次のように行わ取得します
import React from 'react'
import { Field, reduxForm, stopAsyncValidation } from 'redux-form'
import _debounce from 'lodash.debounce'
import renderField from './renderField'
@reduxForm({form: 'debouncedOnChangeValidation'})
class DebouncedOnChangeValidationForm extends React.Component {
customValidate =() => {
const { form, dispatch } = this.props
dispatch(stopAsyncValidation(form, { username: "thats wrong..." })) /* pass in async error directly! */
}
debounceValidate = _debounce(this.customValidate, 1000) /* decorate with debounce! */
render() {
const { handleSubmit, pristine, reset, submitting} = this.props
return (
<form onSubmit={handleSubmit}>
<Field name="username" type="text"
component={renderField} label="Username"
onChange={this.debounceValidate} /* bind validation to onChange! */
/>
<div>
<button type="submit" disabled={submitting}>Submit</button>
<button type="button" disabled={pristine || submitting} onClick={reset}>Clear Values</button>
</div>
</form>
)
}
}
、検証を実行するためのフォームの値にアクセスするには、あなたが必要とするだろうgetFormValues
セレクタを使用します。
もちろん、これは組み込みのソリューションほど堅牢ではありませんが、いくつかのユースケースでは十分に機能するかもしれません。
うわー、深く潜り込んでくれてありがとう。本当にありがとう!私はまた、この素晴らしい解決策を使って、還元型のトピックを開きます。ありがとうございました!私はここに投稿 - https://github.com/erikras/redux-form/issues/3613 – Noitidart
あなたの歓迎!私はちょうどいくつかの詳細に慣れ親しんでしまった – bitstrider
- 1. 非同期非公開と非同期非同期の違いは何ですか?
- 2. なぜ非同期プロセスは同期と呼ばれないのですか?
- 3. RxJavaで非同期メソッドを同期する方法は? RxJavaの非同期ウォーターフォール
- 4. ダーツの非同期は本当に非同期ですか?
- 5. 私の非同期コードが非同期で動作しないのはなぜですか?
- 6. 非同期ループ内の非同期メソッド
- 7. 非同期メソッドの非同期メソッド
- 8. 非同期は
- 9. AJAXのようなノンブロッキングの非同期非同期Pythonリクエスト
- 10. 非同期イベントの同期
- 11. Node.jsの非同期/同期
- 12. 「非同期キーワード非同期」関数を「非同期キーワード非同期」関数に変換できますか?
- 13. ボケは - ボケ、PythonではDataTableの
- 14. は、非同期は
- 15. 非同期メソッドは、私は現在、このようなコード持っている非非同期
- 16. 非同期メソッド非同期に新
- 17. 非同期操作と非同期ネットワークタスク?
- 18. NodeJs - 非同期/非同期/待機中
- 19. 春非同期 - 非同期豆に
- 20. 非同期、非同期待機
- 21. 非同期 - 彼らは私がノードと非同期に新しいです
- 22. 非同期ロードでは、ネイティブ
- 23. は非同期JavaScriptでPromise.all
- 24. 非同期非同期のJavaScriptでの実行順序
- 25. 非同期メソッドでの非同期ライブラリメソッドの使用
- 26. 非同期/同期ループNode.js
- 27. 非同期ソケットと同期
- 28. リクエストレスポンモデル/同期/非同期/イベントドリブン
- 29. Laravelジョブクエリ非同期/同期?
- 30. Uber API同期または非同期
あなたのように聞こえますか? – bitstrider
ああ、それは正しいです、後ろにdebounced @bitstrider – Noitidart