私はReactを初めて使う人です。React.jsデータフローパラダイム - data.props、state、およびJSXはどのように有益でしょうか?
コンポーネントの内訳
:私はカップルのチュートリアルを経て、4つの成分がある小さなページ作成しました(?クラスを反応させるのが、望ましい用語が何である私は、この記事のコンポーネント、それらを呼ぶことにします)含まれており、他のコンポーネントを管理- 親「アプリケーション」コンポーネント
- ユーザーがページ
- テキストとしてフォームからの入力を表示する「文字列表示」のコンポーネントと対話することができます「フォーム」コンポーネント
- は、文字列ビューを解釈してビジュアルを調整するアクションを実行する「ビジュアルビュー」(わかります、悪名...)コンポーネントです。
データフロー
次のように状態や小道具を使用して、これらのコンポーネントの通信は、次のとおり
- フォームアプリ に新しい状態を渡すハンドラONCHANGEました
- アプリケーションは状態データを文字列ビューに転送します
- ストリングビューが更新され、アプリケーションに更新された状態が渡されます
- アプリケーションは新しい状態のデータをビジュアルビューに移します
- 最後に、ビジュアルビューは新しい状態に基づいて更新されるようになりました。
サンプルコード
var App = React.createClass({
handleFormChange: function(formData) {
this.setState({formData:formData});
},
handleStringChange: function(stringData) {
this.setState({stringData:stringData});
},
render: function() {
return (
<div className="app">
<FormView onFormChange={this.handleFormChange}/>
<StringView formData={this.state.formData} onStringChange={this.handleStringChange}/>
<VisualView stringData={this.state.stringData}/>
</div>
);
}
});
var FormView = React.createClass({
handleFormChange: function(e) {
this.props.onFormChange(e.target.value);
}
render: function() {
return(
<div className="formView">
<select onChange={this.handleFormChange}>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
</div>
);
}
});
var StringView = React.createClass({
componentDidUpdate: function() {
this.props.onStringChange({newString:'newStringState'});
},
render: function() {
this.props.formData;
// process formData and update state
return (
<div className="stringView">
{this.props.formData}
</div>
);
}
});
var VisualView = React.createClass({
render: function() {
var selection = this.props.stringData,
output = '';
if (selection === 1) {
output = 'Hooray, 1!';
} else {
output = 'Yes! 2!';
}
return (
<div className="stringView">
{output}
</div>
);
}
});
質問
私は私の実際の質問(複数可)を取得ところです:
- これはReactが実施しようとしている正しいデータフローのパラダイムですか(コンポーネントは兄弟ではなく親だけと話します)。
- 普通のJavaScriptでこれをどのように記述したのかと比べると、これはひどく制約されているようです。私は大きな写真が欠けていますか?このデータフローのパラダイムは、将来の問題を防ぐために設計されていますか(もしそうなら、規律された通常のJavaScriptで解決できないもの)、あるいは私が見逃している他の目的がありますか?
- 私はリピート機能名の多くを得ている(例えばhandleFormChangeを、それがアプリケーションやフォームビューで使われている)、これらを区別できるようにする良い方法はありますか?または、コンポーネント間で繰り返される関数名が望ましいですか?
- コンポーネントが実際にビルドされると、JSXの内容が実際のJavaScriptに変換されます。 JSXを使用する利点はありますか?すでに翻訳されたJavaScriptの作成コンポーネントに利点がありますか?
高度でのおかげで、私は、テキストの壁のようなものだった知っています。私はちょうど私の基礎を正しいことを確かめたいと思う。
まず、私の巨大な投稿を読んでいただきありがとうございます。また、それぞれの質問に非常に明確に答えてくれてありがとう!私が尋ねたことのほとんどが意見に基づいていることを理解していますが、読んでいただけると信じられている信憑性の高い記事を出品したと思います(質問があれば返信します)。 –
@JamesCollierあなたはようこそ!そして私の巨大な答えhahahaについては残念です。 Reactにはたくさんのクールなものがあり、私はあなたの質問に答えてうれしいです! :) –