ホームページ >ウェブフロントエンド >jsチュートリアル >React でのデザインパターン [HOC、レンダープロップ、フック]
デザイン パターンは、ソフトウェア開発における一般的な問題に対する実証済みの解決策です。 React では、これらのパターンを適用すると、コードがよりモジュール化され、再利用可能になり、保守が容易になります。この記事では、React で最も一般的で便利な設計パターンのいくつか、つまり高次コンポーネント (HOC)、レンダー プロップ、およびフックについて説明します。
高次コンポーネント (HOC) は、コンポーネントを受け取り、追加機能を備えた新しいコンポーネントを返す関数です。これらは、複数のコンポーネントに共通のロジックを追加するためによく使用されます。
ボタンをクリックするだけでログ機能を追加する簡単な HOC を作成してみましょう:
import React from 'react'; // Higher Order Component const withLogger = (WrappedComponent) => { return class extends React.Component { handleClick = () => { console.log('Button clicked!'); }; render() { return <WrappedComponent onClick={this.handleClick} {...this.props} />; } }; }; // Componente Original const Button = ({ onClick, children }) => ( <button onClick={onClick}>{children}</button> ); // Componente Envolvido com HOC const ButtonWithLogger = withLogger(Button); export default ButtonWithLogger;
Render Props は、値が関数であるプロップを使用してコンポーネント間でロジックを共有できるようにする手法です。この関数は、コンテンツのレンダリングに必要なデータを受け取ります。
可視性の状態を管理し、レンダリング プロパティを通じてこのロジックを提供するコンポーネントを作成しましょう:
import React, { useState } from 'react'; // Componente de Render Props const Toggle = ({ children }) => { const [isVisible, setIsVisible] = useState(false); const toggleVisibility = () => setIsVisible(!isVisible); return children({ isVisible, toggleVisibility }); }; // Componente que utiliza Render Props const App = () => ( <Toggle> {({ isVisible, toggleVisibility }) => ( <div> <button onClick={toggleVisibility}>Toggle</button> {isVisible && <p>Content is visible</p>} </div> )} </Toggle> ); export default App;
フックは React に最近追加されたもので、クラスを作成せずに状態やその他の React 機能を使用できるようにします。これらは、HOC や Render Props に代わる強力かつ柔軟な代替手段です。
可視性の状態を管理するカスタム フックを作成しましょう:
import { useState } from 'react'; // Hook Personalizado const useToggle = (initialState = false) => { const [isVisible, setIsVisible] = useState(initialState); const toggleVisibility = () => setIsVisible(!isVisible); return [isVisible, toggleVisibility]; }; // Componente que utiliza o Hook const App = () => { const [isVisible, toggleVisibility] = useToggle(); return ( <div> <button onClick={toggleVisibility}>Toggle</button> {isVisible && <p>Content is visible</p>} </div> ); }; export default App;
高次コンポーネント (HOC):
プロップをレンダリング:
フック:
React の各設計パターンには、独自の使用例と利点があります。 Higher Order Components (HOC) は複数のコンポーネントに共通の動作を追加するのに役立ちますが、Render Props を使用すると複雑なロジックを柔軟に共有できます。フックは、機能コンポーネントの状態と副作用を管理するためのシンプルかつ強力な方法を提供します。適切なパターンの選択は、プロジェクト固有のニーズとチームの好みによって異なります。
これらの設計パターンを React アプリケーションに実装すると、コードがよりモジュール化され、再利用可能になり、保守が容易になり、より堅牢でスケーラブルなコードベースが得られます。
この記事がお役に立てば幸いです。ご質問やご提案がございましたら、お気軽にコメントください。
以上がReact でのデザインパターン [HOC、レンダープロップ、フック]の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。