2017-08-13 11 views
0

フォームがReact JSベースのインターフェースを使用していて、入力フィールドの値がプログラムによって変更された場合、入力の値がプログラムで変更された場合の変更イベントのトリガーReact

DOM入力イベントがReactの合成変更イベントに変換されていることを理解しています。 これは入力要素を処理するために使用され、入力値をプログラム的に入力した後にフォーム内のボタンを有効にしていました。

var event = new Event('input', { bubbles: true }); 
inputElement.dispatchEvent(event); 

React JSのアップデート版が使用されているために、これ以上動作しない可能性があります。 これはなぜ機能しないのですか? そして、もう何が今ですか?私は変更、フォーカス、ぼかしイベントのようなイベントをトリガしようと試みたこともありますが、それらのどれも働いていませんでした。 はまた、value属性を変更する代わりに

inputElement.value = "test"; 

しかし、まだイベントの上記の発送は機能していないと言うことを試みました。

+0

これはリアクションではなく、必須のプログラミングです。フォームを再レンダリングするには、小道具または州を変更する必要があります。 – lukaleli

+0

私はプログラム的にしようとしているフォームは間違いなくReactを使用しています。答えの最後のコメントは、これがReactの特定のバージョン、https://stackoverflow.com/a/31056122/1127547で動作していないと思われます。フォームを再レンダリングするために、どのようにして小道具(私はすでに入力フィールドのvalueプロパティを変更しています)または状態を変更できますか? – Qwerty

+0

は 'setState'を使います。単にReactに関する基本的なチュートリアルを見て、あなたに物事を説明します。 – Denialos

答えて

0

ソリューションについて説明しthis answerご覧ください。

var setValue = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set; 
setValue.call(input, 'my new value'); 

var e = new Event('input', { bubbles: true }); 
input.dispatchEvent(e); 

はこれが唯一のinputタグのために働くだろうが。 textareaの場合は、代わりにHTMLTextAreaElementが必要です。

関連する問題