[解決済み] ReactのonChangeとonInputの違いは何ですか?
質問
これに対する答えを探し回りましたが、そのほとんどはReactのコンテキスト外であり、そこで
onChange
がブラーの際にトリガーとなります。
さまざまなテストを実行しても、この 2 つのイベントが (textarea に適用された場合) どのように異なるのかがわからないようです。どなたか、これについて何らかの光を当てていただけませんか?
どのように解決するのですか?
特に違いはないようです。
React は、なぜかリスナーを
Component.onChange
を DOM にアタッチします。
element.oninput
のイベントと同じです。フォームに関するドキュメントの注釈を参照してください。
この動作に驚いている人がもっといます。詳細については、React issue tracker のこの issue を参照してください。
React の onChange が onInput にどのように関連するかを文書化する #3964
その問題のコメントから引用します。
ReactがなぜonChangeをonInputのような動作にしたのか理解できない。私が知る限りでは、以前の onChange の動作を取り戻す方法はありません。ドキュメントでは、これは「誤称」であるとされていますが、実際にはそうではなく、変更があったときに発生しますが、入力もフォーカスを失うまでは発生しません。
検証のために、時には、入力が終わるまで検証エラーを表示したくないことがあります。あるいは、キーストロークごとに再レンダリングしたくない場合もあります。現在、これを行う唯一の方法は onBlur ですが、値が変更されたことを手動で確認する必要があります。
それほど大きな問題ではありませんが、Reactが有用なイベントを捨てて、これを行うイベントがすでにあったのに標準的な動作から逸脱したように私には思えます。
コメントに100%同意します...。しかし、この動作に依存する多くのコードがすでに書かれていたので、今それを変更すると、解決するよりも多くの問題をもたらすと推測します。
React は公式の Web API コレクションの一部ではありません。
ReactがJSの上に構築され、大きな採用率を見たとしても、技術としてのReactは、それ自身の(かなり小さな)APIの下に多くの機能を隠すために存在しています。これが顕著なのがイベントシステムで、標準的なDOMイベントシステムとは根本的に異なることが、表面下でたくさん行われています。どのイベントが何をするかという点だけでなく、イベント処理のどの段階でデータを持続させるかという点でもそうです。それについては、こちらで詳しく説明しています。
関連
-
[解決済み】event.stopPropagationとevent.preventDefaultの違いは何ですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] React NativeとReactの違いは何ですか?
-
[解決済み] nullはなぜオブジェクトなのか、nullとundefinedの違いは何ですか?
-
[解決済み] Reactのstateとpropsの違いとは?
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] reactのrender関数でdynamic hrefを作成するには?
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] jqueryはjavascriptのライブラリなのかフレームワークなのか?[クローズド]
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] ECMAScriptとは?
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] Chrome拡張機能:popup.htmlを強制終了させる