反応するときに


反応は、世界で最も人気のJavaScriptフレームワークの一つとなっている.開発者の成長を続けるチームでは、Facebookは、それをより速く、より軽量にすることで懸命に取り組んでいます.
すべての開発者が理解すべき最も重要な特徴の一つは、Renderメソッドです.あなたは、それが呼ばれているとき、そして、それが呼ばれている方法を理解しなければなりません.
親指の規則として、コンポーネントの再レンダリングを引き起こすすべてのイベントを覚えておくべきです.
反応JSでは、レンダリングメソッドを呼び出します.
  • コンポーネントがマウントされている場合
  • コンポーネントの状態が変更されると
  • コンポーネントの小道具が変更されると
  • forceUpdate 関数は

  • 何がトリガを反応トリガ?
    レンダリングはスケジュールされ、何か重要なことが起こるたびに、反応によって呼び出されます.反応は非常にスマートであり、それが必要な場合のみコンポーネントを更新します.最高のパフォーマンスが達成されることを確認します.

    コンポーネントのマウント
    最初の重要なイベントは、コンポーネントの実装DOM . これは、コンポーネントの最初のレンダリングと見なされ、一度だけ発生します.他のすべての追加のレンダリングは、他のイベントによって引き起こされます.

    状態または支柱の変化
    私たちはstate or props コンポーネントのコンポーネントは、通常、コンポーネントに表示されるものを制御するために使用されます.それらの1つが変更されるたびに、それはコンポーネントをレンダリングするのに完全な意味を作ります.
    しかし、あるケースでは、propsや状態の一部は、レンダリングメソッドに影響を与えません.また、コンポーネントをレンダリングする必要はありません.じゃあどうなるだろう.
    デフォルトではrender とにかくメソッド.それは最適ではありませんが、1つの部分を知っているのは難しいですstate or props コントロールのレンダリングメソッド.良いことは、反応が開発者がこの振舞いをコントロールする方法を実装するということです.この記事の最後のセクションでこのメソッドを見ていきます.

    強制レンダリング
    最後に反応をトリガーすることができますforceUpdate 関数.しかし、このメソッドを使用することは強く推奨され、依存するだけですprops and state .

    何が反応を再レンダリングするときに何が起こる?
    Responseメソッドは、反応コンポーネントをレンダリングするために使用されます.このテクニックは、Webページが更新される必要がある場合に使用されます.
    このテクニックの背後にあるアイデアは、すべての反応コンポーネントの更新は、レンダリングプロセス中に行われます.コンポーネントが再描画されるとき、すべてのロジックと計算が評価されます.すべてが完了すると、コンポーネントは出力をレンダリングします.
    これは、我々が我々が何かを変えるたびに我々の構成要素の1つの1つを処理する代わりに、我々が更新する必要があるものを更新するだけで不必要な計算とDOM操作を避けることができることを意味します.

    どのように、私は反応を再描画するかどうかわかっていますか?
    次の質問に対する答えは簡単です.コンポーネント内のデータが変更された場合にのみ反応コンポーネントがレンダリングされることにすでに同意しました.また、それは任意のコンポーネントデータではないことを学んだ.これは、レンダリングブロックで使用されるデータでなければなりません.
    しかし、いくつかのシナリオでは、この情報は十分ではありません.そして、何が起こっているかを見るためにコンポーネントをデバッグする必要があります.この動作をデバッグして追跡する必要がある場合は、使用するオプションがいくつかあります.

    コンソールログ
    最も簡単な解決策はconsole.log レンダリングブロックの内部で、ブラウザウィンドウ内のコンソール出力を監視します.
    このソリューションは、最速のものですが、それは私たちに快適にトラックを追跡する能力を与えません.また、各コンポーネントの個別に設定する必要があります.

    反応開発ツールの使用
    他の解決策はReact Developer Tools . このツールは、反応チームによって作成されました.そして、それは目的を迅速にデバッグし、反応コンポーネントを検査することです.これは、機能の多くは、1つの能力をレンダリングを追跡することです.
    このツールに精通していない場合は、心配する理由はありません.我々は、時間がない速度にあなたを取得する簡単なチュートリアルを書いた.あなたは完全な記事を読むことができますhere .

    なぜあなたはレンダリング

    why-did-you-render by Welldone Software monkey patches React to notify you about potentially avoidable re-renders


    あなたが具体的にレンダリングを追跡するために構築されたソリューションを使用する場合.パッケージを使用できますWhy Did You Render . それは簡単なセットアップを持っており、すぐにレンダリングを追跡を開始します.
    その上、このパッケージはあなたを避けることができます.あなたのアプリケーションでより良いパフォーマンスを達成しようとしている場合.このパッケージはあなたのための正しい試合かもしれません.

    コンポーネントのレンダリング時の制御
    前に指摘したように、反応はトリガーされるrender 毎回方法props or state 変更点しかし、その上に、実装によって、この行動をさらにカスタマイズすることができますshouldComponentUpdate 関数.
    用途shouldComponentUpdate コンポーネントの出力が現在の変更によって影響されない場合、反応を知らせるためにstate or props . デフォルトの動作は、すべての状態変化に対して再描画することであり、大多数の場合、デフォルトの動作に依存する必要があります.
    次の例では、実装していますshouldComponentUpdate 関数.この場合、コンポーネントはvalue 変更点我々は変更を行うことができますunusedString 必要に応じて、コンポーネントのレンダリングをトリガーしません.
    import React from "react";
    
    class Counter extends React.Component {
      constructor(props) {
        super(props);
        this.state = {
          value: 0,
          unusedString: "Hey there!",
        };
      }
    
      shouldComponentUpdate(nextProps, nextState) {
        // If the method returns true, component is rerendered
        // If it return true, it is not rerenderd
        return this.state.value != nextState.value;
      }
    
      render() {
        return <div>{this.state.value}</div>;
      }
    }
    
    export default Counter;
    

    思考の結論
    反応レンダリングは、通常見落とされる概念です.我々はそれが魔法のように動作し、それを制御する方法がないと思う傾向がある.
    結局、我々は貸し手を心配しないよう奨励されます.そして、state and props を返します.
    しかし、本当に我々のコンポーネントがどのように振る舞っているかを見たいならば、そして、我々は彼らをよりよく振る舞うことができる方法です.我々は、彼らの提出プロセスを検討する必要があります.
    この記事では、反応JSでRenderメソッドについて知っているすべてのことを学びました.あなたはいつ、レンダリングメソッドが呼ばれるかを学びました.と反応JSでレンダリングメソッドをトリガすることができますすべてのイベント.
    心のすべてのこの情報を使用すると、あなたの反応アプリケーションでレンダリングを最適化を開始することができます.