認識React


認識React
準備
babel-cli
Reactには2つの方法があります.
  • は、jsx
  • を通過する.
  • は、js
  • を通じて
    jsxはもっと便利なようですが、バベルでコンパイルしなければなりません.
    babelでReactをコンパイルするjsxには3つの方法があります.(babelの具体的な使い方については疑問が多いようです.後でまた振り回されます.)
  • CLIツールコンパイル
  • Node.js実行時コンパイル
  • ブラウザ(クライアント)実行時コンパイル
  • これはbabel-cliでリアルタイムでコンパイルするつもりです.便利です.
    インストール
    ツールの全体をインストールしました.
    $ [sudo] npm i -gd babel-cli
    プラグインを単独でインストール:
    $ npm i -d babel-preset-react
    使用
    ps:私はここで前に言い間違えました.
    ここにピットがあります.windowsシステムでは直接babel --presets reactができますが、OS xではエラーが発生します.直接に絶対パス/usr/local/lib/node_modules/babel-preset-reactを指定します.
    babel-cliの--presetsパラメータは、親レベルディレクトリにnode_moduleの中のbabel-prest-xxxプラグインを探しています.見つけられなかったら、現在のディレクトリパスに対してプラグインを探しています.
    これ以外にも、絶対パスのプラグインの住所を書いてもいいです.
    プラグインを単独でインストールした後、絶対パスアドレスを書かなくてもいいです.
    $ babel --presets react jsx --watch --out-dir build
    毎回コマンドをノックしたくないなら、プロジェクトディレクトリ(babelコマンドを押すディレクトリ)に.babelrcファイルを新規作成できます.
    {
        "presets": ["react"]
    }
    このようにコマンドをノックする時は--presetsパラメータを持たないでください.
    $ babel jsx --watch --out-dir build
    jsxはコンパイルが必要なフォルダであり、buildはコンパイル後に作成されたフォルダである.
    React v 0.14 xを使用します.
    
    
    
      
      Document
    
    
      
    ps: サイトの では、reactコアjsはラベルの に っています.これは にDOMをレンダリングする に タグの に できます.さもなくば、 のようにラベルの でノードにreactをレンダリングします.
    コンポーネント
    コンポーネントコンセプト
    まず、Inputのコンポーネントをください.
    var Input = React.createClass({
      render: function(){
        return(
          
        )
      }
    })
    Reac.createClassを して されたのがコンポーネントです.rander returnのものをテンプレートと ぶことができます. コンポーネントは つのツリー である( ノードとサブノードがあり、つまり2つのトップノードが に してはいけない.reactは されない).Reactの では つのコンポーネントで されています. み わせも の の です.
    コンポーネントのレンダリング
    ReactDOM.render(
      ,
      document.getElementById('JBody')
    );
    ReactDOM.renderメソッドを び してレンダリングし、 のパラメータはコンポーネントであり、 はコンポーネントを したコンテナである. に、 のパラメータはツリー 、すなわちトップノードのみをサポートする.
    コンポーネントの2つの なオブジェクト
    propspropsは、コンポーネントテンプレートのデータオブジェクトである. には なデータが されています.つまり び し だけに が り てられています.その 、データの があれば、 テンプレートのレンダリングは われません.
    propsの :
    var Input = React.createClass({
      render: function(){
        return(
          //    props
          
        )
      }
    })
    
    ReactDOM.render(
      , //    props
      document.getElementById('JBody')
    )
    statestatepropsと である.stateは データオブジェクトであり、つまりいつでも り てが であり、その データの があればテンプレートの レンダリングが われる(ここでレンダリングすると、reactのvirtual DOMに する).
    stateの :ここでリスト Itemsを する.
    var Items = React.createClass({
      getInitialState: function() {
        return {
          data: [12312,1231,45,51512312,2131]
        }
      },
      render: function(){
        return(
          
      {this.state.data.map((value,i) => { return
    • {value}
    • })}
    ) } })
    getInitialStateは、stateの データを するために される.
    コンポーネントのライフサイクル においてサーバからデータを し、this.setStateメソッドを び してstateに を り てることもできる.this.setStateはその の です.Inputコンポーネントを し、state :
    var Input = React.createClass({
      getInitialState: function() {
        return {
          who: ' '
        }
      },
      change: function(e){
        let target = e.target
        this.setState({
          who : target.value
        })
      },
      render: function(){
        //    props
        return(
          

    {` ${this.state.who} `}

    ) } }) ReactDOM.render( , document.getElementById('JBody') )
    ここではイベントonChangeの び しが われ、イベントをトリガするとstateが されます. システムに する :
  • reactイベントシステム
  • reactフォームイベント
  • コンポーネントのドキュメント
  • コンポーネントAPI
  • コンポーネントライフサイクル
  • コンポーネントの
    reactの には つの なるコンポーネント の に する がないが、 はfluxの 、flux を している.しかし、コミュニティはこのプランがとてもいいとは わないようで、 の reduxがある.
    に する
    reactのコンポーネント の は であるが、コンポーネント は にないといえる.
    の では、コンポーネントの は、データとコンポーネントのレンダリング が であるので、より にデータの として できる. なるコンポーネントのレンダリングを するコンポーネント・コンテナは、データの を で し、 コンポーネントのレンダリングを う.データとコンポーネントレンダリングの ができます.このコンセプトはContiner Components、Leveling Up With React:Continer Componentsです.
    のいくつかのmv*フレームワークでは、 コンポーネントは の インターフェースを っており、Aコンポーネントの でBコンポーネントとデータ ができますが、reactはこのようなインターフェースを っていません.したがって、 や などの ツールを りる があります.
    そうです. たちはFluxやReduxなどを ツールとして うことができます. きなら、 で いてもいいです.AコンポーネントのデータがBコンポーネントのデータと するとき、Bコンポーネントの をダイヤルして、Bコンポーネントにデータを えてください.データはオペレータのシステムの で って、Bコンポーネントに られます.
    シーン
    えばログインします
    つのページで、 つ の を したいコンポーネントがあれば、 が になります. つのコンポーネントがログインしたら、 の を する があるコンポーネントを するべきです.これで の が じました.
    コンポーネントの とパッケージ
    これはあまり くの がないです.コンポーネントの 、 は された です. があれば、 を つけてから します.しかし、これは くの が としてしまうかもしれません. れた パッケージはまず な とメンテナンスに けて、 に されます.
    github:https://github.com/jincdream/jincdream.g...