問題一覧に戻る
上級高度なパターンと型
問題89: 高階コンポーネント(HOC)
追加機能でコンポーネントをラップするHOCパターンを学びます。HOCはコンポーネントを受け取り、拡張されたバージョンを返す関数です。認証、ロギング、データフェッチングなどの一般的な用途があります。モダンReactではフックが好まれますが、HOCの理解はレガシーコードと特定のパターンに役立ちます。
import React from 'react';
{/* HOC関数の定義 */}
function withAuth() {
return function AuthComponent(props) {
const isAuth = true; // Simulated auth
if (!isAuth) {
return <div>Please login</div>;
}
{/* ラップされたコンポーネントをレンダー */}
return < {...} />;
};
}
{/* 元のコンポーネント */}
function Profile({ name }) {
return <h1>Welcome, {name}!</h1>;
}
{/* HOCで拡張 */}
const ProtectedProfile = (Profile);
function App() {
return < name="John" />;
}
export default App;