ホームページ >ウェブフロントエンド >jsチュートリアル >ReactJS の Hello world によって開始されました

ReactJS の Hello world によって開始されました

高洛峰
高洛峰オリジナル
2017-01-21 10:43:501309ブラウズ

この記事では、ユーザー インターフェイスを構築するために Facebook エンジニアによって開発された Javascript ライブラリである React.js のコード例と高レベルの概念を説明します。これらの概念については、次の記事で詳しく説明します。 ReactJS の専門家であり、これらのコードを改善する必要があると感じている場合は、提案を私に書いてください。適時にこの記事/コードを更新します

いくつかのコード例を公開し続ける前に、特別に言及しなければなりません。最近私は AngularJS でコードを書いているので、初心者にとって ReactJS を学ぶのは少し難しいでしょう。UI 作業を支援する上で両者の間には大きな違いがあることを認めなければなりません。このブログ投稿では、それらの主な違いを比較します


ただし、大まかに言えば、私が ReactJS を学習する際に少し「急勾配の」学習パスを選択した理由は次のとおりです。

コンポーネント指向: ReactJS はコンポーネント指向です。つまり、UI 要素をコンポーネントとして考える必要があります。興味深いことに、コンポーネントは構成可能です。これは、コンポーネントが 1 つ以上の内部コンポーネントを持つことができることを意味します。以下のコードは、この

JSX 構文を示しています。興味深い JSX (XML のような) 構文を使用してコードを記述します。 JSX トランスレーター (プリコンパイラー) は、この構文構造を明示的な JavaScript に変換するために使用されます

イベント プロキシ モデル: イベント委任モデルに従ってイベントをキャプチャします

コードに示されている重要な概念をいくつか示します:

コンポーネント

イベントエージェント

JSX 構文


以下は、コンポーネントが実装した内容の簡単な説明です

- ユーザーがユーザー名を入力できる入力ボックス要素。次の記事で説明するように、この入力ボックスは実際には「UserName」コンポーネント

- 「Hello, userName」を表示するために使用される div レイヤー要素です。この div レイヤーが実際には「HelloText」コンポーネントであることについては、次の記事で説明します

それがどのように設計されているかは次のとおりです。さらに、以下の概念を表すコードを見つけてください。


SayHello: コンポーズ可能なコンポーネント

SayHello は、2 つのコンポーネントを含む親コンポーネントです。この親コンポーネントは 2 つの内部コンポーネントで構成されています。 1 つのコンポーネントは UserName で、ユーザーに名前を入力する機能を提供するために使用され、もう 1 つのコンポーネントは HelloText で、Hello, world などのテキストを表示するために使用されます。この親コンポーネントは、次の 3 つの異なる API を定義します:

getInitialState

handleNameSubmit

render (これは必須のインターフェイスです。コンポーネントは、応答としてコンポーネントをレンダリングする方法を React に指示するために render を定義する必要があります)

/
 // This is the parent component comprising of two inner components
 // One of the component is UserName which is used to allow user to enter their name
 // Other component is HelloText which displays the text such as Hello, World
 //
 var SayHello = React.createClass({
 // This is used to set the state, "data" which is
 // accessed later in HelloText component to display the updated state
 //
 getInitialState: function() {
  return {data: 'World'}
 },
 // It is recommended to capture events happening with any children
 // at the parent level and set the new state that updates the children appropriately
 handleNameSubmit: function(name) {
  this.setState({data: name});
 },
 // Render method which is comprised of two components such as UserName and HelloText
 //
 render: function() {
  return(
  <div>
  <UserName onNameSubmit={this.handleNameSubmit}/>
  <HelloText data={this.state.data}/>
  </div>
  );
 }
 });

UserName コンポーネント

UserName コンポーネントには、次の 2 つのメソッドがあります:

handleChange: onChange イベントをキャプチャするために使用されます

render: コンポーネントのレンダリングに使用されます

var UserName = React.createClass({
 handleChange: function() {
  var username = this.refs.username.getDOMNode().value.trim();
  this.props.onNameSubmit({username: username });
  this.refs.username.getDOMNode().value = &#39;&#39;;
  return false;
 },
 render: function() {
  return(
  <form role="form" onChange={this.handleChange}>
   <div className="input-group input-group-lg">
   <input type="text" className="form-control col-md-8" placeholder="Type Your Name" ref="username"/>
   </div>
  </form>
  );
 }
 });


HelloText コンポーネント

HelloText コンポーネントにはメソッドが 1 つだけありますコンポーネントをレンダリングするための

render:包含了展示HelloText组件内容的代码
  
var HelloText = React.createClass({
  render: function() {
  return (
  <div>
   <h3>Hello, {this.props.data}</h3>
  </div>
  );
  }
 });

完全なコードを入手したい場合は、github hello-reactjs ページにコードを投稿しました。お気軽にコメントやご提案をお寄せください。

ReactJS の Hello world に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。