ReactJS は、動的ユーザー インターフェイスを構築するための強力で人気のある JavaScript ライブラリです。ただし、アプリケーションが成長するにつれて、スケーラビリティ、効率性、読みやすさを維持するために、クリーンで組織化されたコードを維持することが不可欠になります。ここでは、クリーンで保守可能な React コードを作成するのに役立ついくつかのベスト プラクティスを紹介します。
src/ ├── components/ │ └── Button/ │ ├── Button.js │ ├── Button.css │ └── index.js ├── pages/ │ └── Home.js └── App.js
コンポーネントを機能 (または責任) ごとに分離すると、コードベースがよりモジュール化され、成長に合わせてナビゲートしやすくなります。
例:
// Instead of class component: class MyComponent extends React.Component { state = { count: 0 }; increment = () => { this.setState({ count: this.state.count + 1 }); }; render() { return <button onClick={this.increment}>{this.state.count}</button>; } } // Use functional component with hooks: import React, { useState } from 'react'; function MyComponent() { const [count, setCount] = useState(0); return <button onClick={() => setCount(count + 1)}>{count}</button>; }
コンポーネントを分解する
大きなコンポーネントはメンテナンスや再利用が困難です。それぞれが単一のタスクを処理する、小規模で焦点を絞ったコンポーネントを作成することを目指します。コンポーネントが複数のことを実行している場合は、それをより小さなサブコンポーネントに分割することを検討してください。
PropType または TypeScript を使用する
React の PropType または TypeScript の静的型付けは、型エラーを早期に検出するのに役立ちます。予期される prop タイプを定義すると、コンポーネントがより予測可能になり、エラーが発生しにくくなります。
PropType を使用した例:
import PropTypes from 'prop-types'; function Greeting({ name }) { return <h1>Hello, {name}</h1>; } Greeting.propTypes = { name: PropTypes.string.isRequired, };
TypeScript を使用した例:
type GreetingProps = { name: string; }; const Greeting: React.FC<GreetingProps> = ({ name }) => { return <h1>Hello, {name}</h1>; };
カスタムフックの例:
import { useState, useEffect } from 'react'; function useFetchData(url) { const [data, setData] = useState(null); useEffect(() => { fetch(url) .then(response => response.json()) .then(data => setData(data)); }, [url]); return data; } // UI Component: function DataDisplay({ url }) { const data = useFetchData(url); return <div>{data ? data.title : 'Loading...'}</div>; }
例:
// Good: const isLoggedIn = true; const userProfile = { name: "John", age: 30 }; // Poor: const x = true; const obj = { name: "John", age: 30 };
例:
import React, { createContext, useContext, useState } from 'react'; const AuthContext = createContext(); export function AuthProvider({ children }) { const [isAuthenticated, setIsAuthenticated] = useState(false); return ( <AuthContext.Provider value={{ isAuthenticated, setIsAuthenticated }}> {children} </AuthContext.Provider> ); } export function useAuth() { return useContext(AuthContext); }
例:
src/ ├── components/ │ └── Button/ │ ├── Button.js │ ├── Button.css │ └── index.js ├── pages/ │ └── Home.js └── App.js
CSS モジュールを使用した例:
// Instead of class component: class MyComponent extends React.Component { state = { count: 0 }; increment = () => { this.setState({ count: this.state.count + 1 }); }; render() { return <button onClick={this.increment}>{this.state.count}</button>; } } // Use functional component with hooks: import React, { useState } from 'react'; function MyComponent() { const [count, setCount] = useState(0); return <button onClick={() => setCount(count + 1)}>{count}</button>; }
スタイル付きコンポーネントの例:
import PropTypes from 'prop-types'; function Greeting({ name }) { return <h1>Hello, {name}</h1>; } Greeting.propTypes = { name: PropTypes.string.isRequired, };
React テスト ライブラリを使用した基本的な例:
type GreetingProps = { name: string; }; const Greeting: React.FC<GreetingProps> = ({ name }) => { return <h1>Hello, {name}</h1>; };
結論
これらのベスト プラクティスに従うことで、クリーンでスケーラブルで保守が容易な React コードを作成できます。ファイルの整理、機能コンポーネントの使用、UI からのロジックの分離、およびコンポーネントのテストは、React アプリケーションをより効率的で楽しく作業できるようにするためのいくつかの方法にすぎません。これらのテクニックをプロジェクトに適用してコードの品質を向上させ、将来の開発をより迅速かつ楽しいものにしましょう。
以上がReactJS のベスト プラクティス: クリーンで保守可能なコードの作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。