コールバック関数と高次関数



高次関数(HOC)はpropsではなく素子をパラメータとして受け入れる.
新しい素子を復元する役割を果たしたやつ
高次関数は、呼び出し時間を決定することによって、パラメータによって伝達されるコールバック関数を呼び出す.
したがって、コールバック関数は高次関数によって呼び出され、高次関数は必要に応じて自己変数をコールバック関数に渡すことができる.
----関数の注入----
タスクを実行する関数を定義します.
function repeat(n) {
  for (let i=0; i<n; i++) console.log(i)
}
repeat(5); //  0 1 2 3 4 5 
上記で宣言したrepeatという関数は、パラメータとして渡される数値と同じです.logを繰り返し呼び出します.
このときrepeat関数はconsoleです.log(i)の状態に依存する.
この場合、「偶数のみ印刷」などの他の操作を実行するために、新しい関数を定義する必要があります.
function repeat1(n) {
  for (let i=0; i<=n; i++) console.log(i);
}
repeat1(5); //0 1 2 3 4 5 

function repeat2(n) {
  for (let i=0; i<=n; i++){
  if (i % 2 == 0) console.log(i)
  }
}
repeat2(5); //0 2 4 
上記の例のrepeat 1とrepeat 2は、共通して一定範囲の操作を繰り返すが、重複操作の内容は異なる.
つまり、共通の部分があるが、異なる部分もあるため、毎回関数を再定義します.
関数の合成により、次の方法でこれらの問題を解決できます.
  • が共に実行する論理を事前に定義する.
  • の状況に応じて変更された論理を抽象化し,外部から内部に注入する.
  • //외부에서 주입괸 func를 n만큼 반복하며 호출한다.
    function repeat(n, func) {
      for (let i=0; i<=n; i++) func(i);
    }
    
    let printAll = function (num) {
    	console.log(num);
    };
    
    let printEven = function (num) {
    	if (num % 2 == 0) console.log(num);
    };
    
    //반복 호출할 함수를 인수로 주입한다.
    repeat(5, printAll); //0 1 2 3 4 5
    repeat(5, printEven); //0 2 4
    本質的に同じ概念を共有していると思ったら、分かりやすいです.

    🌟コールバック関数


    JavaScriptの関数は1レベルのオブジェクトであるため、関数のパラメータとして渡すことができ、上記の設計を実現することができます.repeat関数は内部論理に強く依存せず、構造をより柔軟にします.
    このようなパラメータを介して他の関数内部に伝達される関数をコールバック関数と呼び,パラメータを介してコールバック関数を伝達する関数を高次関数と呼ぶ.

    🌟高次関数


    新しいHookはHocの使用を減らしました
    再利用可能なコンポーネントにおけるロジックの高度なテクノロジー
    応答によって作成された構成部品のみが使用され、応答に限定されません.あるパターンを意味し、
    一般に、反応中の素子を素子の自然状態と呼び、反応素子を継承または再利用する方式ではなく、組み合わせ方式のある反応素子の本性によって引き起こされる何らかの現象である.

    hocは関数です.
    functionはパラメータを受信し、新しい構成部品を返します.

    素子は実際には関数と見なすこともできる.もちろんクラス素子もありますが、関数素子はpropsをパラメータとし、propsに依存するuiで表されます.
    通常、コールバック関数が高次関数内でのみ呼び出される場合、コールバック関数は匿名関数ライブラリとして定義され、高次関数に直接渡されます.
    これらの素子を入れ,汎用論理と回収可能論理を追加した新しい素子を受信した.
    多くのライブラリでも特別な状況が提供されています.