HOC, HOF
1.HOC(High Order Component)
HOC,高次素子は,素子を論理として導入し,新しい素子を返す関数である.Reduxなどのライブラリでよく見られます.これはエンクロージャ2n.関数から拡張された概念である.
このHOCでは、権限分岐の概念を適用できます.
import { useRouter } from "next/router";
import { useEffect } from "react";
export const withAuth = (Component) => (props) => {
const router = useRouter();
useEffect(() => {
if (!localStorage.getItem("accessToken")) {
alert("로그인 후 이용 가능합니다.");
router.push("/login");
}
}, []);
return <Component {...props} />;
};
accessToken
の状態で登録の有無を確認するwithAuth素子です.(練習コードなのでlocalStorageを使用しました.)import { withAuth } from "../../src/components/commons/hocs/withAuth";
import BoardList from "../../src/components/units/board/list/list.container";
function BoardListPage() {
return <BoardList />;
}
export default withAuth(BoardListPage);
その後、withAuthコンポーネントを投稿リストページにカプセル化し、投稿リストページにアクセスすると、ログインしていない場合はログインページ(/login)にアクセスします.2. HOF(High Order Function)
HOCと同様にCloser関数に拡張された概念である.名称にFがあることから分かるように,
return
値は素子ではなく関数である.export default function HofTest() {
const cats = ["푸딩", "애옹", "춘식"];
const onClickButton = (el) => (event) => {
console.log(el);
};
return (
<div>
{cats.map((el) => (
<button key={el} onClick={onClickButton(el)}>
{el}
</button>
))}
</div>
);
}
これはHOF機能をテストするために書かれたコードです.ブラウザで実行すると、各ボタンを押したときの
el
の値がコンソールに印刷されます.Reference
この問題について(HOC, HOF), 我々は、より多くの情報をここで見つけました https://velog.io/@ssjjyy/HOC-HOFテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol