[コードキャンプ5週目]反応HOC VS HOF
[HOF]
HOFは高次関数です.高次関数は、関数を因数として取り、新しい関数を返す関数です.
JavaScriptの関数は1レベルのオブジェクトです.一級オブジェクトとは?関数は変数としても、パラメータとしても、戻ることもできるので、JavaScriptでは関数は1レベルのオブジェクトです.
HOFはこの一級オブジェクトの特性を利用して用いられる関数である.
HOFは高受注機能の略です.
簡単な例を見てみましょう.
const aaa=()=>{
console.log("aaa")
}
const HOF=(func)=>{
console.log("여기 있는 내용들 먼저 실행 시켜줄래?")
return func();
}
const bbb = HOF(aaa)
bbb();
//여기 있는 내용들 먼저 실행 시켜줄래?
//aaa
簡単なコード説明は、aaaという関数を宣言するだけでHOF関数からパラメータ伝達関数を取得し、HOFの内容を先に実行し、パラメータ受信aaa関数がHOF関数で実行されていることを確認することです.すなわちHOFは高次関数となる.
[HOC]
HOCはjavascriptのHOFから入手した反応器のみの高度な技術である.
これは、単独の反応器において機能をサポートするものではなく、反応器素子の特性を発揮してHOFに類似した技術を実現させるものである.
HOFと変わらない
HOCは高次コンポーネントの略です.
すなわち、高次素子と呼ばれる.
簡単な素子で高次素子を作ります.
//HOC.js
import { useEffect } from "react";
const HOC = (Component) => (props) => {
useEffect(() => {
console.log("로그인 검증 기능 실시");
}, []);
return <Component {...props}></Component>;
};
export default HOC
まずHOCで1つの素子をパラメータとして受け入れ,propsも一緒に受け入れる.そして、HOC関数の実行時には、まずUSEffectを実行し、ログイン検証機能を実装するコンソールを優先的に印刷する.
//AppComponent.js
import HOC from "./HOC";
const AppComponent = () => {
return <div>인증 절차</div>;
};
export default HOC(AppComponent);
その後、exportでHOCを実行し、パラメータとしてAppComponentを一緒に送信します.これにより、AppComponentがレンダリングされると、HOCが一緒に実行されると、ログイン検証機能が優先的に出力され、AppComponentの内容がレンダリングされます.これにより、UseEffectを使用して各コンポーネントを個別に検証することなく、ログイン検証機能をUseEffectとして共有できます.
Reference
この問題について([コードキャンプ5週目]反応HOC VS HOF), 我々は、より多くの情報をここで見つけました https://velog.io/@alsqjarlwkd/React-HOC-vs-HOFテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol