React の最大の強みの 1 つはコンポーネントベースのアーキテクチャであり、開発者はモジュール式で再利用可能な UI を構築できます。再利用可能なコンポーネントは時間を節約するだけでなく、アプリケーション全体の一貫性を確保します。このブログ投稿では、React で再利用可能なコンポーネントを構築するためのベスト プラクティスを検討し、実用的なコーディング例を提供します。
コードの説明に入る前に、再利用可能なコンポーネントがなぜ重要なのかを説明しましょう。
再利用可能なコンポーネントを構築する最初のステップは、アプリケーション全体で頻繁に使用される UI 要素を特定することです。まず、単純な自己完結型コンポーネントを作成します。
例: ボタンコンポーネント
import React from 'react'; import PropTypes from 'prop-types'; import './Button.css'; const Button = ({ label, onClick, type = 'button' }) => ( <button className="btn" onClick={onClick} type={type}> {label} </button> ); Button.propTypes = { label: PropTypes.string.isRequired, onClick: PropTypes.func, type: PropTypes.oneOf(['button', 'submit', 'reset']), }; export default Button;
コンポーネントを真に再利用可能にするには、props を通じてコンポーネントを構成できる必要があります。これにより、内部コードを変更せずにコンポーネントの外観と動作をカスタマイズできます。
例: 構成可能なボタンコンポーネント
import React from 'react'; import PropTypes from 'prop-types'; import './Button.css'; const Button = ({ label, onClick, type = 'button', className = '', disabled = false }) => ( <button className={`btn ${className}`} onClick={onClick} type={type} disabled={disabled}> {label} </button> ); Button.propTypes = { label: PropTypes.string.isRequired, onClick: PropTypes.func, type: PropTypes.oneOf(['button', 'submit', 'reset']), className: PropTypes.string, disabled: PropTypes.bool, }; export default Button;
ここでは、Button コンポーネントに className やdisabled などの追加のプロパティがあり、より柔軟でさまざまなユースケースに適応できるようにしています。
コンポジションを使用すると、単純なコンポーネントを組み合わせて複雑なコンポーネントを構築できます。このアプローチは、UI を小さく管理しやすい部分に分割するという React の哲学に従っています。
例: カードコンポーネント
import React from 'react'; import PropTypes from 'prop-types'; import './Card.css'; const Card = ({ title, content, footer }) => ( <div className="card"> <div className="card-header">{title}</div> <div className="card-body">{content}</div> <div className="card-footer">{footer}</div> </div> ); Card.propTypes = { title: PropTypes.node.isRequired, content: PropTypes.node.isRequired, footer: PropTypes.node, }; export default Card;
この例では、Card コンポーネントはタイトル、コンテンツ、フッターの小道具で構成されており、任意の React 要素を渡してカスタム カード レイアウトを作成できます。
children prop を使用すると、コンポーネントと要素を子として渡すことができるため、再利用可能なコンポーネントの使用方法がより柔軟になります。
例: モーダルコンポーネント
import React from 'react'; import PropTypes from 'prop-types'; import './Modal.css'; const Modal = ({ isOpen, onClose, children }) => { if (!isOpen) return null; return ( <div className="modal"> <div className="modal-content"> <button className="modal-close" onClick={onClose}>X</button> {children} </div> </div> ); }; Modal.propTypes = { isOpen: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, children: PropTypes.node, }; export default Modal;
Modal コンポーネントは、子プロップを使用して渡されたコンテンツをレンダリングするため、モーダル ダイアログを表示するための非常に柔軟で再利用可能なコンポーネントになります。
再利用可能なコンポーネントのスタイル設定は難しい場合がありますが、styled-components や Emotion などの CSS-in-JS ライブラリを使用すると、モジュール式のスタイル管理に役立ちます。
例: スタイル付きボタンコンポーネント
import React from 'react'; import styled from 'styled-components'; const StyledButton = styled.button` background-color: ${(props) => (props.primary ? 'blue' : 'gray')}; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; &:hover { background-color: ${(props) => (props.primary ? 'darkblue' : 'darkgray')}; } `; const Button = ({ label, primary, onClick }) => ( <StyledButton primary={primary} onClick={onClick}> {label} </StyledButton> ); export default Button;
この例では、StyledButton コンポーネントは styled-components を使用して、プライマリ プロップに基づいて条件付きスタイルを適用し、スタイルに対するクリーンでモジュール式のアプローチを提供します。
React で再利用可能なコンポーネントを構築することは、保守可能で一貫性のある効率的なアプリケーションを作成するための強力な方法です。単純なコンポーネントから始めて構成可能にし、構成と子を活用し、効果的なスタイル手法を使用することで、開発プロセスの時間と労力を節約する再利用可能なコンポーネントのライブラリを作成できます。さらに、Storybook などのツールを使用してコンポーネントを文書化すると、他の人が理解しやすく、使用しやすくなります。
コーディングを楽しんでください!
以上がReact で再利用可能なコンポーネントを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。