Reduxを使用したReactアプリケーションでは、機能成分の状態を管理するためには、 useSelector
およびuseDispatch
フックが不可欠です。これらを使用する方法は次のとおりです。
USESELECTOR HOOK : useSelector
フックは、Reduxストア状態からデータを抽出するために使用されます。これにより、Reduxストアを購読して、州が変更されたときに自動的に更新を受信できます。通常、コンポーネントに必要な状態データを読み取るために使用します。
<code class="javascript">import { useSelector } from 'react-redux'; function MyComponent() { const count = useSelector(state => state.counter.value); // You can use the 'count' value within your component return <div>{count}</div>; }</code>
この例では、 useSelector
、抽出する状態のどの部分を指定する関数を取ります。フックは、関連する状態が変更されるたびにこのセレクター機能を再実行し、コンポーネントは更新された値で再レンダリングします。
UsedisPatchフック: useDispatch
フックは、Reduxストアからdispatch
機能を返します。これを使用して、コンポーネントからアクションを発送できます。
<code class="javascript">import { useDispatch } from 'react-redux'; import { increment } from './counterSlice'; function MyComponent() { const dispatch = useDispatch(); return ( <button onclick="{()"> dispatch(increment())}> Increment </button> ); }</code>
この場合、 useDispatch
dispatch
関数にアクセスできるため、Reduxストアにアクションを送信できます。ボタンがクリックされると、アクションのタイプとペイロードに基づいて状態の変更をトリガーするincrement
アクションが発見されます。
機能コンポーネントでuseSelector
およびuseDispatch
フックを使用すると、connect()関数など、reduxを使用して状態を管理する他の方法と比較して、いくつかの利点があります。
connect()
関数の複雑さとそのmapStateTopropsおよびMapDispatchToprops関数に対処する必要はありません。これにより、より簡潔で読みやすいコードが発生します。useSelector
には、パフォーマンスの最適化が組み込まれています。デフォルトで参照平等チェックを使用します。つまり、選択された状態が変更されていない場合、不必要な再レンダーを引き起こさないことを意味します。useEffect
useState
などのような他のフックとシームレスに作業し、ローカルとグローバルの両方の状態を効果的に管理できるようにします。以下は、React機能コンポーネントでuseSelector
とuseDispatch
セットアップおよび使用する方法を示す簡単な例です。
<code class="javascript">import React from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { increment, decrement } from './counterSlice'; // Assuming you have a slice defined in counterSlice.js function Counter() { // Extract the current count from the Redux store state const count = useSelector(state => state.counter.value); // Get the dispatch function to dispatch actions const dispatch = useDispatch(); return ( <div> <h2>Counter: {count}</h2> <button onclick="{()"> dispatch(increment())}>Increment</button> <button onclick="{()"> dispatch(decrement())}>Decrement</button> </div> ); } export default Counter;</code>
この例では、 useSelector
を使用してReduxストアからcount
を抽出し、 useDispatch
を使用してdispatch
関数を取得します。これは、それぞれのボタンがクリックされたときにインクincrement
と削減アクションを発送し、 decrement
ために使用されます。
useSelector
およびuseDispatch
フックを使用すると、ReduxでReduxを使用してReduxを使用することに大きな影響を与える可能性があります。
useSelector
、浅い平等チェックを使用して新しい状態と前の状態を比較することにより、再レンダーを最適化します。選択した状態が変更されていない場合、コンポーネントは再レンダリングせず、パフォーマンスが向上します。useSelector
興味のある状態の一部にのみサブスクライブするため、再計算して再レンダリングする必要があるデータの量を最小限に抑えることができます。useMemo
やuseCallback
など)を使用して、 useSelector
と組み合わせてパフォーマンスをさらに最適化できます。これにより、不必要な再計算や再レンダーを防ぐことができます。useSelector
useDispatch
犠牲にすることなくこのスケーラビリティを促進します。要約すると、 useSelector
およびuseDispatch
フックは、再レンダーを最適化し、効率的な状態の更新を提供し、よりシンプルでメンテナンス可能なコードを通じてスケーラビリティをサポートすることにより、アプリケーションのパフォーマンスを向上させることができます。
以上がreduxストアと対話するために、機能コンポーネントのUseSelectorおよびsudeSpatchフックをどのように使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。