React Release Candidate v0.14レビュヌ

最初のリリヌス候補バヌゞョンReact 0.14をご玹介したす 7月に予定されおいる倉曎のアナりンスを公​​開したしたが 、リリヌスをさらに安定させたした。最終バヌゞョンをリリヌスする前に詊しおみおください。



GitHubリポゞトリでタスクを䜜成しお、問題がある堎合はお知らせください





蚭眮



npmでReactを䜿甚し、browserifyやwebpackなどのナヌティリティを䜿甚しおコヌドを1぀のパッケヌゞにコンパむルするこずをお勧めしたす。



npm install --save react@0.14.0-rc1 npm install --save react-dom@0.14.0-rc1
      
      





デフォルトでは、開発モヌドでは、Reactは远加のチェックを起動し、有甚な譊告を提䟛するこずに泚意しおください。 したがっお、アプリケヌションをデプロむするずき、実皌働モヌドを䜿甚するように実 皌働環境でNODE_ENV環境倉数を蚭定したす。このモヌドでは、Reactはサヌビス譊告を含たず、はるかに高速に動䜜したす。



npmを䜿甚できない堎合は、䟿利なようにブラりザ甚にコンパむルされたビルドも提䟛したす。





これらのアセンブリは、バりアヌパッケヌゞずしおも利甚できたす reactおよびreact-dom



倧きな倉曎





2぀のパッケヌゞReactおよびReact DOM



react-native 、 react-art 、 react-canvas、 react-threeなどのモゞュヌルを芋るず、Reactの矎しさず本質はブラりザヌやDOMずは䜕の関係もないこずが明らかになりたす。



これをReactがレンダリングできるより倚くの環境でより透明で䜿いやすくするために、メむンのreactパッケヌゞを2぀に分割したす reactずreact-dom 。

これは、WebバヌゞョンのReactおよびReact Nativeで共有できるコンポヌネントを䜜成する方法を提䟛したす。 アプリケヌション内のすべおのコヌドを共有する必芁はありたせんが、異なるプラットフォヌムで同じように動䜜するコンポヌネントを共有できるようにしたいず考えおいたす。



reactパッケヌゞには、 React.createElement 、 .createClass 、 .Component 、 .PropTypes 、 .Children 、および芁玠ずコンポヌネントクラスに焊点を圓おたその他のヘルパヌが含たれおいたす。 コンポヌネントを構築するために必芁な同型たたは汎甚ヘルパヌず考えおいたす。



react-domパッケヌゞには、 ReactDOM.render 、 .unmountComponentAtNode、および.findDOMNodeが含たれおいたす。 react-dom / serverでは、 ReactDOMServer.renderToStringおよび.renderToStaticMarkupを䜿甚しおサヌバヌでのレンダリングをサポヌトしおいたす。



 var React = require('react'); var ReactDOM = require('react-dom');</p> <p>var MyComponent = React.createClass({ render: function() { return <div>Hello World</div>; } }); ReactDOM.render(<MyComponent />, node);
      
      







この移行のためにFacebookで䜿甚する自動化されたcodemodスクリプトを公​​開したした



アドオンは別のパッケヌゞに移動されたした react-addons-clone-with-props 、 react-addons-create-fragment 、 react-addons-css-transition-group 、 react-addons-linked-state-mixin 、 react-addons-perf 、 react-addons-pure-render-mixin 、 react-addons-shallow-compare 、 react-addons-test-utils 、 react-addons-transition-groupおよびreact- addons -update 、ならびにReactDOM。 react-domの unstable_batchedUpdates



今のずころ、バヌゞョン管理の問題を防ぐために、アプリケヌションでreactおよびreact-domの特定のバヌゞョンを䜿甚しおください。



DOMノヌドぞのリンク



このリリヌスで行った別の重芁な倉曎は、DOMコンポヌネントぞの参照がDOMノヌド自䜓を参照するようになったこずです。

これが䜕を意味するのかReact DOMコンポヌネントぞのrefリンクで䜕をしおいるのかを芋お、それでできる唯䞀の䟿利なこずはthis.refs.giraffe.getDOMNodeを呌び出しおDOMを取埗するこずだずわかりたしたノヌド。 このリリヌスでは、 this.refs.giraffe が珟圚のDOMノヌドです。

カスタムナヌザヌ定矩コンポヌネントぞのリンクは以前ず同じように機胜するこずに泚意しおください。 ネむティブDOMコンポヌネントのみがこの倉曎の察象ずなりたす。



 var Zoo = React.createClass({ render: function() { return <div>Giraffe name: <input ref="giraffe" /></div>; }, showName: function() { // Previously: var input = this.refs.giraffe.getDOMNode(); var input = this.refs.giraffe; alert(input.value); } });
      
      







この倉曎は、DOMノヌドをルヌトコンポヌネントずしお枡すずきのReactDOM.renderの戻り結果にも適甚されたす。 refず同様に、これらの倉曎はカスタムコンポヌネントには適甚されたせん。 これらの倉曎により、サポヌトされおいない.getDOMNodeメ゜ッドを宣蚀し、 ReactDOM.findDOMNodeメ゜ッドに眮き換えたす以䞋を参照。



愚かなコンポヌネント



React固有のコヌドでは、蚘述するコンポヌネントのほずんどに独自の状態を持たせないでください。 ステヌトレス。 そのようなコンポヌネントの新しい単玔な構文を提瀺したす。この構文では、小道具を匕数ずしお枡し、レンダリングする芁玠を返すこずができたす。



 //  ES2015 (ES6)  : var Aquarium = (props) => { var fish = getFish(props.species); return <Tank>{fish}</Tank>; }; //      : var Aquarium = ({species}) => ( <Tank> {getFish(species)} </Tank> ); //  : <Aquarium species="rainbowfish" />
      
      







このパタヌンは、ほずんどのアプリケヌションを構成するこれらの単玔なコンポヌネントの䜜成を促進するように蚭蚈されおいたす。 将来的には、これらのコンポヌネント専甚にパフォヌマンスを最適化し、䞍芁なチェックやメモリ割り圓おを回避するこずもできたす。



React-toolsはサポヌトされなくなりたした



react-toolsパッケヌゞずJSXTransformer.jsのブラりザヌバヌゞョンは望たしくありたせ ん 。 バヌゞョン0.13.3でも匕き続き䜿甚できたすが、サポヌトしなくなったため、ReactずJSXの組み蟌みサポヌトがあるBabelの䜿甚に切り替えるこずをお勧めしたす。



コンパむラヌの最適化



Reactは、Babel 5.8.23以降に含めるこずができる2぀のコンパむラヌ最適化をサポヌトするようになりたした。 これらの倉換は 、実行パフォヌマンスを改善したすが、サヌビス譊告をより隠し、propTypesを含む開発モヌドで発生する重芁なチェックをスキップするため、これらの倉換は䞡方ずも本番環境たずえば瞮小前にのみ含める必芁がありたす。



React芁玠の埋め蟌み optimisation.react.inlineElementsは、 React.createElementを呌び出す代わりに、JSX芁玠を{type 'div'、props...}などのオブゞェクトに倉換したす。



React芁玠の絶え間ない「浮動」 optimisation.react.constantElementsは、芁玠の䜜成をサブツリヌの䞊䜍レベルに「䞊げ」たす。これは完党に静的であり、 React.createElementの呌び出しず移動を枛らしたす。 さらに重芁なこずは、サブツリヌが倉曎されおいないこずをReactに通知するため、Reactは調敎時にサブツリヌを完党にスキップできたす。



重倧な倉曎



い぀ものように、このリリヌスではいく぀かの重芁な倉曎がありたす。 倧きな倉曎を加えるたびに、少なくずも1぀のリリヌスを含めお譊告したす。 コヌドを曎新する時間がありたす。 Facebookのコヌドベヌスは15,000を超えるReactコンポヌネントであるため、Reactチヌムでは、重芁な倉曎の圱響を最小限に抑えるよう垞に努めおいたす。



これらの3぀の重芁な倉曎により、バヌゞョン0.13で譊告が生成されたため、コヌドに譊告がなければ䜕もする必芁はありたせん。





これらの2぀の倉曎は0.13では蚺断されたせんでしたが、簡単に芋぀けお修正できたす。





新しい譊告の䟋倖







倧幅な改善







新しい圹立぀譊告







重芁な修正







投皿者 ベン・アルパヌト



All Articles