コンポーネントは、任意のReactアプリケーションの基本的な構成要素です。それらは、ユーザーインターフェイスの一部を表す再利用可能なコードです。各コンポーネントは、独自の状態を管理し、独自のUIをレンダリングする自己完結型モジュールと考えることができます。 Reactのコンポーネントは機能的またはクラスベースのいずれかになりますが、フックの出現により、機能的なコンポーネントは、そのシンプルさと読みやすさのためにより一般的に使用されます。
コンポーネントは、プロップを介してデータを受信できます。これは、コンポーネントへの入力であり、レンダリング方法に影響を与える可能性があります。また、独自の内部状態を維持することができ、ユーザーインタラクションに応答し、それに応じてUIを更新することができます。 Reactコンポーネントは、複雑でインタラクティブなUIを構築するために一緒に構成でき、最新のWebアプリケーションを構築するための強力なツールになります。
Reactの関数コンポーネントとクラスコンポーネントは、UI要素をカプセル化およびレンダリングするのと同じ目的を果たしますが、特に以前のバージョンのReactバージョンでは、構文と機能が異なります。
機能コンポーネント:
単純な機能コンポーネントの例:
<code class="jsx">function Welcome(props) { return <h1>Hello, {props.name}</h1>; }</code>
クラスコンポーネント:
React.Component
から拡張されるES6クラスです。componentDidMount
、 componentDidUpdate
、 componentWillUnmount
などのライフサイクルメソッドを使用できます。単純なクラスコンポーネントの例:
<code class="jsx">class Welcome extends React.Component { render() { return <h1>Hello, {this.props.name}</h1>; } }</code>
現代の反応開発では、フックを備えた機能的成分が、そのシンプルさとコンポーネント間のステートフルな論理を簡単に再利用する能力のために好まれます。
反応のコンポーネント間のデータを渡すことは、コンポーネント(親子、子ども、または兄弟コンポーネント)間の関係に応じて、いくつかの方法で達成できます。
1。親から子供:小道具
親から子コンポーネントにデータを渡す最も一般的な方法は、小道具を使用することです。小道具は、親コンポーネントから子コンポーネントに渡される読み取り専用データです。
例:
<code class="jsx">function Parent() { const name = 'John'; return <child name="{name}"></child>; } function Child(props) { return <p>Hello, {props.name}!</p>; }</code>
2。子から親:コールバック
子から親コンポーネントにデータを渡すには、コールバック関数をプロップとして子コンポーネントに渡すことができます。子コンポーネントはこの関数を呼び出して、必要なデータを親に渡すことができます。
例:
<code class="jsx">function Parent() { const handleNameChange = (newName) => { console.log(newName); }; return <child onnamechange="{handleNameChange}"></child>; } function Child(props) { const name = 'Jane'; return <button onclick="{()"> props.onNameChange(name)}>Send Name</button>; }</code>
3。兄弟間:状態を持ち上げます
兄弟コンポーネント間でデータを共有する必要がある場合は、状態を最も近い一般的な親コンポーネントまで持ち上げることができます。その後、親コンポーネントは状態を管理し、小道具として小道具として渡すことができます。
例:
<code class="jsx">function Parent() { const [name, setName] = useState(''); const handleNameChange = (newName) => { setName(newName); }; return ( <div> <child1 name="{name}" onnamechange="{handleNameChange}"></child1> <child2 name="{name}"></child2> </div> ); } function Child1(props) { const name = 'John'; return <button onclick="{()"> props.onNameChange(name)}>Send Name</button>; } function Child2(props) { return <p>Hello, {props.name}!</p>; }</code>
状態を効果的に管理することは、堅牢で効率的なReactアプリケーションを構築するために重要です。 Reactコンポーネントにおける国家管理のためのいくつかのベストプラクティスは次のとおりです。
1。地方の状態にuseState
フックを使用してください。
機能的なコンポーネントの場合、 useState
フックを使用してローカル状態を管理します。このアプローチは、コンポーネントをシンプルに保ち、UIロジックに焦点を合わせます。
例:
<code class="jsx">function Counter() { const [count, setCount] = useState(0); return ( <div> <p>You clicked {count} times</p> <button onclick="{()"> setCount(count 1)}>Click me</button> </div> ); }</code>
2。必要に応じて状態を上げます:
複数のコンポーネントが同じ状態を共有する必要がある場合は、状態を最も近い親に引き上げます。これにより、小道具の掘削を避け、コンポーネントの階層を清掃します。
3.グローバル状態にコンテキストAPIを使用します。
アプリケーション全体で多くのコンポーネントがアクセスする必要がある状態については、コンテキストAPIの使用を検討してください。すべてのレベルで手動で小道具を渡すことなく、コンポーネントツリーにデータを渡す方法を提供します。
例:
<code class="jsx">const ThemeContext = React.createContext('light'); function App() { return ( <themecontext.provider value="dark"> <toolbar></toolbar> </themecontext.provider> ); } function Toolbar() { return ( <div> <themedbutton></themedbutton> </div> ); } function ThemedButton() { const theme = useContext(ThemeContext); return <button style="{{" background: theme="==" :>I am styled by theme context!</button>; }</code>
4.複雑なアプリケーションには、Reduxまたはその他の州管理ライブラリを使用します。
複雑な州の管理ニーズを持つより大きなアプリケーションについては、Reduxなどのライブラリの使用を検討してください。 Reduxは、アプリケーションの状態に集中型ストアと、その状態を更新するための一連の予測可能なルールを提供します。
5.州の更新を不変に保ちます:
状態を更新するときは、既存のオブジェクトを変異させる代わりに、常に新しい状態オブジェクトを返します。これにより、コンポーネントを効率的に再レンダリングし、パフォーマンスが向上するのに役立ちます。
例:
<code class="jsx">// Incorrect: Mutating state const [user, setUser] = useState({ name: 'John', age: 30 }); user.age = 31; // Don't do this! // Correct: Returning a new state object setUser(prevUser => ({ ...prevUser, age: 31 }));</code>
6.メモを使用してパフォーマンスを最適化します。
useMemo
とuseCallback
フックを使用して、高価な計算とコールバック関数をメモし、コンポーネントの不必要な再レンダーを防ぎます。
例:
<code class="jsx">const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); const memoizedCallback = useCallback(() => doSomething(a, b), [a, b]);</code>
これらのベストプラクティスに従うことで、Reactコンポーネントで状態を効果的に管理し、より保守可能でパフォーマンスのあるアプリケーションをもたらすことができます。
以上がReactのコンポーネントは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。