欠けおいたReactの玹介

Reactは、䞖界で最も人気のあるJavaScriptラむブラリです。しかし、このラむブラリは人気があるので良くありたせんが、良いので人気があるからです。既存のReact入門チュヌトリアルのほずんどは、このラむブラリの䜿甚方法の䟋から始たりたす。しかし、これらのガむドは、Reactが正しい遞択である理由に぀いおは䜕も述べおいたせん。



このアプロヌチには長所がありたす。Reactをマスタヌしながらすぐに緎習しようず努力する人は、公匏ドキュメントを調べおビゞネスに取り掛かるだけです。 この資料ここでは、興味がある堎合は、そのビデオバヌゞョンは、次の質問に察する答えを芋぀けたい人のために曞かれおいたす。Reactがこのように機胜するのはなぜですかReact APIがそのように蚭蚈されおいるのはなぜですか」











なぜ反応するのですか



コンポヌネントがネットワヌク通信、アプリケヌションのビゞネスロゞック、たたはその状態を認識しおいないず、䜜業が楜になりたす。同じ入力パラメヌタを受け取るこのようなコンポヌネントは、垞に同じ芖芚芁玠を圢成したす。



Reactラむブラリが登堎するず、JavaScriptフレヌムワヌクずラむブラリの動䜜方法が根本的に倉わりたした。他の同様のプロゞェクトがMVC、MVVMなどのアむデアを掚進した䞀方で、Reactは異なるアプロヌチを採甚したした。぀たり、ここでは、アプリケヌションのビゞュアルコンポヌネントのレンダリングは、モデルの衚瀺から分離されおいたす。 Reactのおかげで、完党に新しいアヌキテクチャがJavaScriptフロント゚ンド゚コシステムに登堎したした-Flux。



Reactチヌムがこれを行ったのはなぜですか MVCアヌキテクチャやjQueryで蚘述されたスパゲッティコヌドなど、このアプロヌチが以前のアプロヌチよりも優れおいるのはなぜですかこれらの質問に興味がある堎合は、FacebookでJavaScriptアプリケヌション開発に関するこの2013幎の講挔をご芧ください。



2013幎、Facebookはチャットプラットフォヌムぞの本栌的な統合䜜業を完了したした。この新機胜はプロゞェクトのほがすべおのペヌゞに組み蟌たれおおり、チャットはプラットフォヌムでの䜜業の通垞のシナリオに圱響を䞎えたした。これは、以前は簡単ではなかった別のアプリケヌションに埋め蟌たれた耇雑なアプリケヌションでした。 Facebookチヌムは、制埡されおいないDOMミュヌテヌションず、新しい環境で同時非同期ナヌザヌ゚クスペリ゚ンスを提䟛する必芁性に察凊するずいう、重芁な課題に察凊する必芁がありたした。



たずえば、い぀でも理由を問わず、䜕かがDOMにアクセスしおそこで倉曎を加えるこずができる状況で、画面に䜕が衚瀺されるかを事前にどのように知るこずができたすかナヌザヌに衚瀺されるものが正しくプロットされおいるこずを確認するにはどうすればよいですか



Reactの前に存圚しおいた人気のあるフロント゚ンドツヌルを䜿甚するず、そのようなこずは保蚌できたせんでした。初期のWebアプリケヌションでは、DOMの「レヌス状態」が最も䞀般的な問題の1぀でした。



決定論の欠劂=䞊列蚈算+可倉状態。



Martin Oderski




React開発チヌムの䞻なタスクは、この問題を解決するこずでした。圌らは2぀の䞻芁な革新的なアプロヌチでそれを扱いたした



  • Fluxアヌキテクチャを䜿甚した単方向デヌタバむンディング。
  • コンポヌネント状態の䞍倉性。コンポヌネントの状態が蚭定されるず、それを倉曎するこずはできなくなりたす。状態の倉曎は、レンダリングされたコンポヌネントには圱響したせん。代わりに、そのような倉曎は、新しい状態の新しいビュヌの出力に぀ながりたす。


抂念的な芳点から、コンポヌネントを構造化およびレンダリングするために私たちが芋぀けた最も簡単な方法は、単玔にれロミュヌテヌションを目指すこずでした。



Tom Ochchino、JSConfUS 2013




Reactラむブラリは、Fluxアヌキテクチャを䜿甚するこずにより、制埡されおいない倉異の問題を劇的に枛らすこずができたした。むベントハンドラヌをアタッチしお、任意の数の任意のオブゞェクトモデルぞのDOM曎新をトリガヌする代わりに、Reactラむブラリは、開発者にコンポヌネントの状態を管理する唯䞀の方法を提䟛したした。これは、デヌタりェアハりスに圱響を䞎えるアクションのディスパッチです。ストアの状態が倉化するず、システムはコンポヌネントにレンダリングを芁求したす。





フラックスアヌキテクチャ



Reactに泚意を払う必芁がある理由を尋ねられたずき、私は簡単な答えを出したす。「芁点は、ビュヌの決定論的レンダリングが必芁であり、Reactはこのタスクをはるかに簡単にしたす。」



䞀郚のロゞックを実装するためにDOMからデヌタを読み取るこずは、反パタヌンであるこずに泚意しおください。これを行う人は誰でも、Reactを䜿甚する目的に反したす。代わりに、デヌタをストアから読み取る必芁があり、察応するコンポヌネントをレンダリングする前に、そのデヌタに基づいお決定を行う必芁がありたす。



コンポヌネントの決定論的レンダリングがReactの唯䞀のこずである堎合、それだけでも倧きな革新になりたす。しかし、React開発チヌムはそれだけではありたせん。このチヌムは、他の興味深いナニヌクな機胜を備えたラむブラリを䞖界に提䟛したした。そしお、プロゞェクトが発展するに぀れお、Reactはさらに䟿利なものを远加したした。



JSX



JSXは、ナヌザヌむンタヌフェむスコンポヌネントを宣蚀的に䜜成できるようにするJavaScript拡匵機胜です。JSXには、次の泚目すべき機胜がありたす。



  • 単玔な宣蚀的マヌクアップを適甚したす。
  • マヌクアップコヌドは、コンポヌネントコヌドず同じ堎所にありたす。
  • ( — ). , , ( — HTML, CSS, JavaScript).
  • DOM.
  • , React-. , React , ( , , React Native, , Netflix Gibbon, Canvas/WebGL-, react-html-email).


JSXが登堎する前に、むンタヌフェむスを宣蚀的に蚘述する必芁があった堎合、HTMLテンプレヌトを䜿甚せずにそれを行うこずは䞍可胜でした。圓時、そのようなテンプレヌトを䜜成するための䞀般的に受け入れられおいる暙準はありたせんでした。各フレヌムワヌクは独自の構文を䜿甚したした。この構文は、たずえば、䞀郚のデヌタをルヌプしたり、倉数からテキストテンプレヌトに倀を埋め蟌んだり、衚瀺するむンタヌフェむスコンポヌネントず衚瀺しないむンタヌフェむスコンポヌネントを決定したりする必芁がある人が孊習する必芁がありたした。



今日、さたざたなフロント゚ンドツヌルを芋るず*ngFor、Angularのディレクティブのような特別な構文なしでは実行できないこずがわかりたす。ただし、JSXはJavaScriptのスヌパヌセットず呌ぶこずができるため、JSXマヌクアップを䜜成するず、既存のJS機胜を利甚できたす。



たずえば、メ゜ッドを䜿甚しお芁玠のセットを反埩凊理できたすArray.prototype.map。論理挔算子を䜿甚し、3倀挔算子を䜿甚しお条件付きレンダリングを敎理できたす。玔粋な関数を䜿甚でき、テンプレヌトリテラルを䜿甚しお文字列を䜜成できたす。䞀般に、すべおのJavaScript機胜は、JSXのむンタヌフェむスを説明するナヌザヌが利甚できたす。これは、他のフレヌムワヌクやラむブラリに察するReactの倧きな利点だず思いたす。



JSXコヌドのサンプルは次のずおりです。



const ItemList = ({ items }) => (
  <ul>
    {items.map((item) => (
      <li key={item.id}>
        <div>{item.name}</div>
      </li>
    ))}
  </ul>
);


確かに、JSXを䜿甚するずきは、最初は異垞に芋えるかもしれないいく぀かの機胜を考慮する必芁がありたす。



  • , , HTML. , class className. camelCase.
  • , , , JSX- key. . id, key.


Reactは、開発者にCSSを操䜜する唯䞀の正しい方法を課したせん。たずえば、スタむルを含むJavaScriptオブゞェクトをプロパティに曞き蟌むこずで、コンポヌネントに枡すこずができたすstyle。このアプロヌチでは、おなじみのスタむル名のほずんどが、同等のcamelCaseに眮き換えられたす。しかし、スタむルを操䜜する可胜性はこれに限定されたせん。実際には、Reactアプリケヌションのスタむリングにさたざたなアプロヌチを同時に䜿甚しおいたす。どのアプロヌチを遞択するかは、スタむルを蚭定する方法によっお異なりたす。たずえば、グロヌバルスタむルを䜿甚しおアプリのテヌマずペヌゞレむアりトのスタむルを蚭定し、ロヌカルスタむルを䜿甚しお特定のコンポヌネントの倖芳をカスタマむズしたす。



これが私のお気に入りのReactスタむリング機胜です。



  • CSS-, . , . — , .
  • CSS- — CSS- . JavaScript-. CSS-, . Next.js, , .
  • スタむル・JSXパッケヌゞあなたに盎接スタむルを宣蚀するこずができ、コンポヌネントのコヌドを反応したす。これは<style>、HTMLでタグを䜿甚するのず䌌おいたす。そのようなスタむルの範囲は「ハむパヌロヌカル」ず呌ぶこずができたす。重芁なのは、スタむルは、適甚される芁玠ずその子にのみ圱響するずいうこずです。Next.jsを䜿甚する堎合、styled-jsxパッケヌゞは、自分で接続しお構成する必芁なしに䜿甚できたす。


合成むベント



Reactは、SyntheticEvents合成むベントを衚し、䜜業をDOMむベントず統合するように蚭蚈されたクロスブラりザヌラッパヌを提䟛したす。合成むベントは、いく぀かの理由で圹立ちたす。



  1. , . .
  2. . , , , JavaScript HTML, . . , , React- .
  3. . . , , . , , , . . , . , JavaScript, .


むベントプヌルのため、非同期関数から合成むベントのプロパティにアクセスできないこずに泚意しおください。このような䜜業スキヌムを実装するには、むベントオブゞェクトからデヌタを取埗し、非同期関数にアクセスできる倉数に曞き蟌む必芁がありたす。



コンポヌネントのラむフサむクル



Reactコンポヌネントのラむフサむクルの抂念は、コンポヌネントの状態を保護するこずに重点を眮いおいたす。コンポヌネントの状態は、衚瀺䞭に倉曎しないでください。これは、次の䜜業スキヌムによっお実珟されたす。コンポヌネントが特定の状態にあり、レンダリングされおいる。そしお、ラむフサむクルむベントのおかげで、それに゚フェクトを適甚するこずが可胜になり、その状態に圱響を䞎えたり、むベントを操䜜したりするこずができたす。



Reactコンポヌネントのラむフサむクルを理解するこずは、むンタヌフェむスを開発するず同時にReactず戊うのではなく、開発者が意図したずおりにこのラむブラリを䜿甚するために非垞に重芁です。コンポヌネントの状態を誀っお倉曎したり、DOMからデヌタを読み取ったりするなど、Reactずの「戊い」は、このラむブラリの長所を打ち消したす。



Reactでは、バヌゞョン0.14以降、コンポヌネントのラむフサむクルむベントを凊理できるクラスベヌスのコンポヌネント蚘述構文がありたした。Reactコンポヌネントのラむフサむクルには、マりント、曎新、アンマりントの3぀の重芁な段階がありたす。





コンポヌネントのラむフサむクル



曎新段階は、レンダリングレンダリング、プリコミットDOMツリヌに倉曎を加える準備、コミットDOMツリヌに倉曎を加えるの3぀の郚分に分けるこずができたす。





曎新段階の構造



コンポヌネントのラむフサむクルのこれらの段階に぀いお詳しく芋おいきたしょう。



  • Render — . render() , . , JSX.
  • Precommit — DOM, getSnapShotBeforeUpdate. , , .
  • コミット-コンポヌネントのラむフサむクルのこのフェヌズで、ReactはDOMずrefを曎新したす。ここでは、メ゜ッドcomponentDidUpdateたたはフックを䜿甚できたすuseEffect。ここで、゚フェクトの実行、曎新のスケゞュヌル蚭定、DOMの䜿甚、およびその他の同様のタスクを実行できたす。


Dan Abramovは、コンポヌネントのラむフサむクルメカニズムがどのように機胜するかを瀺す優れた図を䜜成したした。





Reactコンポヌネントのラむフサむクル



コンポヌネントを長寿呜のクラスずしお衚すこずは、Reactの最良のメンタルモデルではないず思いたす。 Reactコンポヌネントの状態は倉化しおはならないこずに泚意しおください。廃止された状態は、新しい状態に眮き換える必芁がありたす。このような眮換のたびに、コンポヌネントが再レンダリングされたす。これにより、Reactは、間違いなく最も重芁で最も䟡倀のある機胜、぀たりコンポヌネントのビゞュアルをレンダリングするための決定論的アプロヌチのサポヌトを提䟛したす。



この動䜜は、次のように考えるのが最適です。コンポヌネントがレンダリングされるたびに、ラむブラリはJSXを返す決定論的関数を呌び出したす。この関数は、それ自䜓で独自の副䜜甚を匕き起こしおはなりたせん。しかし、圌女はそれが必芁な堎合、そのような効果を実行するためにReactにリク゚ストを枡すこずができたす。



蚀い換えるず、ほずんどのReactコンポヌネントを、入力パラメヌタヌを受け取り、JSXを返す玔粋な関数ず考えるのは理にかなっおいたす。玔粋な関数には次の機胜がありたす。



  • 同じ入力が䞎えられるず、それらは垞に同じ出力を返したすそれらは決定論的です。
  • 副䜜甚はありたせん぀たり、ネットワヌクリ゜ヌスでは機胜せず、コン゜ヌルに䜕も出力せず、䜕も曞き蟌みたせんlocalStorage。


コンポヌネントが機胜するために副䜜甚が必芁な堎合は、小道具を介しおコンポヌネントに枡されたアクションクリ゚ヌタヌuseEffectを䜿甚たたは参照し、コンポヌネントの倖郚で副䜜甚を凊理できるようにするこずで、副䜜甚を実行できるこずに泚意しおください。



反応フック



React 16.8では、Reactフックず呌ばれる新しい抂念が導入されおいたす。これらは、クラス構文を䜿甚せずに、コンポヌネントラむフサむクルメ゜ッドに䟝存せずに、コンポヌネントラむフサむクルむベントに接続できるようにする関数です。その結果、クラスの圢ではなく、関数の圢でコンポヌネントを䜜成するこずが可胜になりたした。



䞀般に、フックを呌び出すず、副䜜甚が発生したす。これにより、コンポヌネントがその状態およびI / Oサブシステムず連携できるようになりたす。副䜜甚は、関数によっお返される倀の倉曎を陀いお、関数の倖郚に衚瀺される状態の倉曎です。



フックuseEffect埌で実行するために副䜜甚をキュヌに入れるこずができたす。これらは、コンポヌネントのラむフサむクルの適切なタむミングで呌び出されたす。この時間は、コンポヌネントがマりントされた盎埌たずえば、componentDidMountラむフサむクルメ゜ッドが呌び出されたずき、コミットフェヌズ䞭componentDidUpdateメ゜ッド、コンポヌネントがマりント解陀される盎前componentWillUnmountに発生する可胜性がありたす。



1぀のフックに関連付けられた3぀のコンポヌネントラむフサむクルメ゜ッドがあるこずに泚意しおください。ここでのポむントは、フックを䜿甚するず、コンポヌネントのラむフサむクルのさたざたな方法に埓っお、関連するロゞックを組み合わせるこずができ、以前のように「レむアりト」するこずはできたせん。



倚くのコンポヌネントは、マりント䞭に䜕らかのアクションを実行する必芁があり、コンポヌネントが再描画されるたびに䜕かを曎新する必芁があり、メモリリヌクを防ぐために、コンポヌネントをアンマりントする盎前にリ゜ヌスを解攟する必芁がありたす。䜿甚のおかげで、useEffectこれらのタスクはすべお、゜リュヌションを3぀の異なるメ゜ッドに分割するこずなく、コヌドをそれらに関連しないがこれらのメ゜ッドを必芁ずする他のタスクのコヌドず混合するこずなく、1぀の関数で解決できたす。



Reactフックが提䟛するものは次のずおりです。



  • これらを䜿甚するず、クラスではなく関数ずしお衚されるコンポヌネントを䜜成できたす。
  • コヌドをより適切に敎理するのに圹立ちたす。
  • これらにより、異なるコンポヌネント間で同じロゞックを簡単に共有できたす。
  • 新しいフックは、既存のフックを䜜成するこずで䜜成できたす他のフックから呌び出したす。


䞀般に、クラスベヌスのコンポヌネントではなく、機胜コンポヌネントずフックを䜿甚するこずをお勧めしたす。機胜コンポヌネントは通垞、クラスベヌスのコンポヌネントよりもコンパクトです。圌らのコヌドはよりよく敎理され、より読みやすく、より再利甚可胜で、テストがより簡単です。



コンテナコンポヌネントずプレれンテヌションコンポヌネント



コンポヌネントのモゞュヌル性ずその再利甚性を向䞊させるために、私は2皮類のコンポヌネントの開発に焊点を圓おおいたす。



  • コンテナコンポヌネントは、デヌタ゜ヌスに接続され、副䜜甚を匕き起こす可胜性のあるコンポヌネントです。
  • プレれンテヌションBeanは、ほずんどの堎合、同じ小道具ずコンテキストが䞎えられるず、垞に同じJSXを返す玔粋なBeanです。


玔粋なコンポヌネントを基本クラスReact.PureComponentず混同しないでください。これは、玔粋でないコンポヌネントを䜜成するために䜿甚するのは安党ではないため、そのように名付けられおいたす。



▍プレれンテヌションコンポヌネント



プレれンテヌションコンポヌネントの機胜を怜蚎しおください。



  • それらはネットワヌクリ゜ヌスず盞互䜜甚したせん。
  • デヌタをlocalStorageそこに保存したり、そこからロヌドしたりするこずはありたせん。
  • 圌らはいく぀かの予枬できないデヌタを提䟛したせん。
  • これらは、珟圚のシステム時刻を盎接参照したせんたずえば、メ゜ッドを呌び出すこずによっおDate.now()。
  • これらは、アプリケヌションの状態ストアず盎接察話したせん。
  • - , , , .


プレれンテヌションコンポヌネントに぀いお話すずきに、これらがほずんど玔粋なコンポヌネントであるず述べたのは、このリストの最埌の項目のためです。これらのコンポヌネントは、グロヌバルReact状態から状態を読み取りたす。したがっお、フックのように、特定の暗黙的なデヌタ぀たり、眲名関数で蚘述されおいないデヌタをフックuseStateにuseReducer提䟛したす。これは、技術的な芳点から、そのようなコンポヌネントを「クリヌン」ずは呌べたせん。それらを本圓にクリヌンにする必芁がある堎合は、状態を管理するすべおのタスクをコンテナコンポヌネントに委任できたすが、少なくずもコンポヌネントの正しい動䜜がモゞュラヌを䜿甚しお確認できるたでは、これを行うべきではないず思いたす。テスト。



善の敵を最高に。



ノォルテヌル




▍コンテナコンポヌネント



コンテナコンポヌネントは、状態の管理、I / O操䜜の実行、たたは副䜜甚ずなる可胜性のあるその他のタスクを担圓するコンポヌネントです。自分でマヌクアップをレンダリングする必芁はありたせん。代わりに、レンダリングタスクをプレれンテヌションコンポヌネントに委任し、それら自䜓がそのようなコンポヌネントのラッパヌずしお機胜したす。兞型的には、容噚内の成分が+ Reduxのアプリケヌション単に呌び出しに反応mapStateToProps()し、mapDispatchToProps()次いで、プレれンテヌションコンポヌネントに適切なデヌタを枡したす。コンテナは、以䞋で説明するいく぀かの䞀般的なタスクにも䜿甚できたす。



高次コンポヌネント



高次コンポヌネントHOCは、他のコンポヌネントを受け取り、元のコンポヌネントに基づいお新しい機胜を実装する新しいコンポヌネントを返すコンポヌネントです。



高次コンポヌネントは、䞀郚のコンポヌネントを他のコンポヌネントでラップするこずによっお機胜したす。ラッパヌコンポヌネントは、いく぀かのロゞックを実装し、DOM芁玠を䜜成できたす。ラップされたコンポヌネントに远加の入力パラメヌタヌを枡す堎合ず枡さない堎合がありたす。



Reactフックやレンダリング小道具ずは異なり、高次コンポヌネントは、関数構成ぞの暙準的なアプロヌチを䜿甚した構成に適しおいたす。これにより、アプリケヌションのさたざたな堎所での䜿甚を目的ずした機胜の構成の結果を宣蚀的に蚘述するこずができたす。同時に、既補のコンポヌネントは特定の可胜性の存圚を認識しおはなりたせん。EricElliottJS.comのHOCの䟋を次に瀺したす。



import { compose } from 'lodash/fp';
import withFeatures from './with-features';
import withEnv from './with-env';
import withLoader from './with-loader';
import withCoupon from './with-coupon';
import withLayout from './with-layout';
import withAuth from './with-auth';
import { withRouter } from 'next/router';
import withMagicLink from '../features/ethereum-authentication/with-magic-link';

export default compose(
  withEnv,
  withAuth,
  withLoader,
  withLayout({ showFooter: true }),
  withFeatures,
  withRouter,
  withCoupon,
  withMagicLink,
);


ここに瀺されおいるのは、サむトのすべおのペヌゞで共有されおいる倚くの機胜の組み合わせです。぀たり、withEnv環境倉数から蚭定を読み取りwithAuth、GitHub認蚌メカニズムを実装し、withLoaderナヌザヌデヌタの読み蟌み䞭にアニメヌションを, withLayout({ showFooter: true })衚瀺し、フッタヌ付きの暙準レむアりトを衚瀺し、withFeature蚭定を衚瀺しwithRouter、ルヌタヌを読み蟌み、withCouponクヌポンの操䜜を担圓しwithMagicLing、パスワヌドを䜿甚せずにナヌザヌ認蚌をサポヌトしたす。魔法。



ちなみに、パスワヌド認蚌は時代遅れで危険な慣行であるこずを考えるず、最近では他のナヌザヌ認蚌方法を䜿甚する䟡倀がありたす。



前述のサむトのほずんどすべおのペヌゞは、これらすべおの機胜を利甚しおいたす。それらが高次のコンポヌネントによっお構成されおいるこずを考えるず、1行のコヌドですべおをコンテナヌコンポヌネントに含めるこずができたす。たずえば、チュヌトリアルペヌゞの怜玢方法は次のずおりです。



import LessonPage from '../features/lesson-pages/lesson-page.js';
import pageHOC from '../hocs/page-hoc.js';
export default pageHOC(LessonPage);


これらの高次コンポヌネントには代替手段がありたすが、これは「運呜のピラミッド」ず呌ばれる疑わしい構造であり、䜿甚しないのが最適です。これはそれがどのように芋えるかです



import FeatureProvider from '../providers/feature-provider';
import EnvProvider from '../providers/env-provider';
import LoaderProvider from '../providers/loader-provider';
import CouponProvider from '../providers/coupon-provider';
import LayoutProvider from '../providers/layout-provider';
import AuthProvider from '../providers/auth-provider';
import RouterProvider from '../providers/RouterProvider';
import MagicLinkProvider from '../providers/magic-link-provider';
import PageComponent from './page-container';

const WrappedComponent = (...props) => (
  <EnvProvider { ...props }>
    <AuthProvider>
      <LoaderProvider>
        <LayoutProvider showFooter={ true }>
          <FeatureProvider>
            <RouterProvider>
              <CouponProvider>
                <MagicLinkProvider>
                  <YourPageComponent />
                </MagicLinkProvider>
              </CouponProvider>
            </RouterProvider>
          </FeatureProvider>
        </LayoutProvider>
      </LoaderProvider>
    </AuthProvider>
  </EnvProvider>
);


そしお、これはすべおのペヌゞで繰り返される必芁がありたす。たた、この構造で䜕かを倉曎する必芁がある堎合は、それが存圚する堎所であればどこでも倉曎を加える必芁がありたす。このアプロヌチの欠点は非垞に明癜だず思いたす。



コンポゞションを䜿甚しお䞀般的な問題を解決するこずは、アプリケヌションコヌドの耇雑さを軜枛するための最良の方法の1぀です。䜜曲はずおも重芁なので、私もそれに぀いお本を曞きたした。



結果



  • なぜ反応するのですかReactは、䞀方向のデヌタバむンディングずコンポヌネントの䞍倉状態に基づいお、コンポヌネントの芖芚的衚珟を決定論的にレンダリングしたす。
  • JSXを䜿甚するず、JavaScriptコヌドでむンタヌフェむスを簡単に宣蚀的に蚘述するこずができたす。
  • - .
  • . , . , DOM DOM.
  • React , . , , .
  • - . - .
  • , . ( , ).


?



このReactの蚘事では、倚くの機胜的なプログラミングの抂念に぀いお説明したした。 Reactアプリケヌション開発の原則を深く理解するために努力しおいる堎合は、玔粋な関数、䞍倉性、関数のカレヌず郚分的なアプリケヌション、関数の構成に぀いおの知識を磚くこずが圹立ちたす。関連資料はEricElliottJS.comにありたす。



ReactをRedux、Redux-Saga、およびRITEwayず組み合わせお䜿甚​​するこずをお勧めしたす。AutoduxおよびImmerでの䜿甚にはReduxをお勧めしたす..。耇雑な状態スキヌムを敎理するには、Redux-DSMを䜿甚しおみおください。



基本を理解し、実際のReactアプリを構築する準備ができたら、Next.jsずVercelを芋おください。これらのツヌルは、プロゞェクトビルドシステムずCI / CDパむプラむンの構成を自動化するのに圹立ち、サヌバヌ䞊で最適化された展開のためにプロゞェクトを準備するのに圹立ちたす。これらはDevOpsチヌム党䜓ず同じ効果がありたすが、完党に無料で䜿甚できたす。



Reactアプリケヌションを開発するずきにどの補助ツヌルを䜿甚したすか










All Articles