React の useState フォームと機能更新フォームが必要なのはなぜですか?
P粉041856955
P粉041856955 2023-08-24 13:38:45
0
2
409

React Hook 関数の更新に関するドキュメントを読んでいて、次の文を見つけました:

<ブロック引用>

更新された値は前の値に基づいているため、「 」および「-」ボタンは関数形式を使用します

しかし、関数更新の目的がわかりません。また、新しい状態を計算するときに古い状態を直接使用することとの違いもわかりません。

React useState Hook の更新関数に関数更新フォームが必要なのはなぜですか? 違いがはっきりとわかる(したがって、直接更新を使用するとエラーが発生する)例は何ですか?

たとえば、ドキュメントの例を次のように変更すると、

function Counter({initialCount}) { const [カウント, setCount] = useState(initialCount); 戻る ( <> カウント: {カウント}     ); }

count を直接更新します:

function Counter({initialCount}) { const [カウント, setCount] = useState(initialCount); 戻る ( <> カウント: {カウント}     ); }

動作に違いは見られず、カウントが更新されない(または最新ではない)状況は想像できません。カウントが変更されるたびに、最新のカウントを取得するために新しいクロージャーが呼び出されるからです。

P粉041856955
P粉041856955

全員に返信 (2)
P粉986937457

私は最近このニーズに遭遇しました。たとえば、配列にデータを設定し、ユーザーによる何らかのアクション (私の場合はユーザーが画面を下にスクロールし続けたときなど) に基づいて毎回 10 項目の動的ソースをロードできるコンポーネントがあるとします。コードは次のようになります。次のようになります:

リーリー

明らかに、useEffect フックの依存関係リストに feedItems を単純に追加することはできません。その中で setFeedItems を呼び出すため、ループにはまってしまいます。

機能アップデートによる救済:

リーリー
いいねを押す+0
    P粉238355860

    React では、ステータスの更新は非同期です。したがって、次回の更新では、countに古い値が含まれる可能性があります。たとえば、次の 2 つのコード例の結果を比較してください:

    リーリー ###そして### リーリー
    いいねを押す+0
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!