私はリアクションで何かしようとしていますが、これは他のフレームワークでは非常に簡単です:フォームから値の束を集めたいと思います。ベストプラクティスでフォームデータを読むために
は、以前私がバックボーンビューこの種のものをやって、それは非常に簡単だった:
readFormValues: function() {
this.data.foo = this.$('[name="foo"]').val();
this.data.bar = this.$('[name="bar"]:checked').val();
});
しかし、中には、私はそれを行うための簡単な方法を見つけることができないよう反応します。 ...私の唯一のオプションは、にしているようだ
注:フォーマット用謝罪:コードブロックとリストが完全にバイパスが反応し、jQueryの使用
:-(一緒にうまく再生されません
handleSubmit: function(e) {
:フォームにアクセスするには、+var $form = $(e.target).parents('form:first');
this.data.foo = $form.find('[name="foo"]);
},
render: function() {
return <form onSubmit="handleSubmit"><input name="foo"/></form>;
動作し、シンプルですが、それは私が反応バイパスとjQueryを使用していますように感じている}
とき、私はちょうどべきリアクションを使用している。
すべてのフォームコントロールにコールバックを提供します
handleFooClick: function(e) {
this.data.foo = event.target.value;
},
render: function() {
return <form><input name="foo" onChange="handleFooChange"/></form>;
}
これはリアクト/フラックスのようですが、不必要な作業が狂っているように感じます。私のバックボーンの例では、フォームコントロールごとに1行だけ必要でしたが、このアプローチでは、最後のすべてのコントロールは独自のonChangeハンドラを持っていなければなりません。
EDIT:このアプローチの1つの以上の欠点は、コールバック
this.props
とthis.state
内の私のフォームコントロールの小道具/状態を指していないということ(それは入力の小道具/状態を指します)です。つまり、入力ごとにハンドラを作成し、レンダリングするときにそのコールバックをすべての入力に追加するだけでなく、データオブジェクトをすべての入力に渡す必要があります。使用、参考文献:
handleSubmit: function(e) {
this.state.data.foo = this.refs.foo.value;
},
render: function() {
return <form><input ref="foo"/></form>;
}
これは、すべてのフォームコントロールに「ref」属性を追加するだけで、バックボーンで簡単にデータを読み取ることができます。しかし、すべてのReactのドキュメンテーションには、refを使った方法が間違っていることが示唆されています(refを使用するすべての例では、コントロールにデータを読み込むのではなく、 "この入力に焦点を当てる"など)。
は私が不複雑ではない、私のフォームデータにアクセスするための「-IVEに反応」の方法がなければならないように感じるが、私は十分に反応理解していないので、私はそれを見ていませんよ。私が見逃していることをリアクトエキスパートが説明できるなら、私はそれを高く評価します。
を拡張します。私は「リアクトリンク」が存在することに気づいていなかった。しかし、私はそれについて2つのことを見る。第一に、あなたがリンクした記事は、「フレームワークが初めての場合、ReactLinkはほとんどのアプリケーションでは必要ではないので、慎重に使用する必要があります。第二に、ミックスインが必要だと思われ、ミックスインはReactで廃止されたと考えましたか? – machineghost