ReactのuseState

useStateは、Reactの最も基本的で最も重要なフックであり、FunctionalComponentに状態変数を設定することで状態を管理できます。

useStateフックについて詳しく説明する前に、まず、useStateだけでなく、ほとんどすべてのフックに適用されるフックの基本といくつかの落とし穴について説明します。

それで、フックとは何ですか?名前が示すように、フックはReact機能に「フック」できる特別な機能です。関数コンポーネントを記述し、状態を追加または変更する必要がある場合は、フックを使用するだけです(以前はクラスコンポーネントに変換してthis.stateを使用する必要がありました)。したがって、基本的にフックはクラス内では機能せず、クラスを作成する代わりにフックを使用します。フックを書くときに覚えておくべきいくつかのルール:

  1. フックは常に機能コンポーネント内に記述されます。
  2. フックは、すべてのコンポーネントのレンダリングでまったく同じ順序で呼び出す必要があります。

それでは、useStateフックとその使用方法について説明しましょう。

useStateの宣言

まず、このようにuseStateをインポートする必要があります。

useStateはreactからの名前付きエクスポートであるため、React.useStateと書くこともできます。

初期状態の作成

useStateは、初期のデフォルト状態を引数として渡される関数であり、2つのエントリを持つ配列を返します。配列の最初のエントリは現在の状態であり、2番目のエントリは状態を更新できるようにするメソッド(関数)です。

useStateから返される配列を簡単に分割するために、このようなデストラクチャリングを使用しています。

アレイの破壊; stateは、0で初期化された現在の状態ですが、setStateを使用すると、状態を更新できます。
useStateフックを使用してオブジェクトを状態変数として使用する。ただし、状態を書き込んだり更新したりするときは、この場合はドット演算子を使用する必要があることを忘れないでください

オブジェクトを引数としてuseStateに渡すこともできますが、関数コンポーネントで複数のuseStateを使用できるため、状態ごとに個別のuseStateフックを設定する方がはるかに一般的です。

状態の更新

useStateによって返される2番目の要素は、状態変数を更新するために新しい値を受け取る関数です。

これは、ボタンを使用してクリックするたびに状態(カウント)を更新する例です:(ここで試す)

onClick = {increment}を渡して、上部で関数を宣言することもできますが、それでも問題ありません。

prevStateを使用して状態を更新することにより、前の値を受け取り、新しい値を返す関数を渡します。しかし、状態を更新するために状態を直接渡すことができたと思われるかもしれません。この例では、大きな違いはありませんが、状態を更新する方法は間違っています。理由は次のとおりです。

(ここで試してください)

これにより、正しい出力が表示されます(前と同じ)
シングルクリックでカウンターを3回インクリメントすると思いますか?それはしません!

これは、カウント値が関数をレンダリングするときのカウントの値にすぎないためです。デフォルト値0を設定しているため、常に1が表示されます。基本的に、これらは相互にオーバーライドされます。

しかし、これはシングルクリックでカウンターを3回インクリメントします!

set関数の2番目のバージョンでは、前の値をとる関数を渡すことができます。したがって、レンダリングするたびに、前の値が渡され、カウンターが3回インクリメントされます。

useStateの関数バージョン

useStateは、値の代わりに関数を引数として使用することもでき、その関数は、コンポーネントが最初にレンダリングされたときにのみ実行されます。

これにより、デフォルト値が100に設定されます。
関数は、コンポーネントがレンダリングされるたびに実行されます。

結論

useStateは、関数コンポーネントに状態変数を含めることができるフック(関数)です。この関数に初期状態を渡すと、現在の状態値(必ずしも初期状態である必要はありません)を含む変数と、この値を更新するための別の関数が返されます。覚えておくべきいくつかのポイントは、useStateから始めるのが良いでしょう。

提案された投稿

脳卒中の壊滅的な結果を避ける: 家族の旅から学ぶ 。

脳卒中の壊滅的な結果を避ける: 家族の旅から学ぶ 。

はじめに 脳卒中は、いつでも誰でも起こり得る医療上の緊急事態です。これは、脳の一部への血流が中断され、脳機能が突然失われることで発生します。

Jest — 強力な JavaScript テスト フレームワーク

Jest — 強力な JavaScript テスト フレームワーク

テストはソフトウェア開発において不可欠な部分です。これにより、コードの信頼性が保証され、期待どおりに機能し、エラーの可能性が軽減されます。

関連記事

地球を救ってお金を稼ぐ方法

地球を救ってお金を稼ぐ方法

ペットボトル、ガラス瓶、アルミ缶、グリーンエネルギーパッケージなどを、何回考えずに捨てたことがあるでしょうか? リサイクルする代わりに何かが得られたらいいのにと何度思ったことか。あなたがほとんどの人と同じなら、おそらく答えは何度もあるはずです。リサイクルは、多くの場合、即時的または具体的な利益をもたらさない面倒な作業、面倒な作業、または義務であると考えられています。

24 年度に炭素除去に資金を提供

経路全体にわたる Carbon180 の割り当てリクエストの内訳

24 年度に炭素除去に資金を提供

アリソン・リー著、マネージング政府問題顧問 連邦政府の年次歳出プロセスは、二酸化炭素除去 (CDR) に資金を提供する取り組みの中心です。毎年、Carbon180 は、来年の資金がどこに流れるかの指針となるよう、さまざまな議会事務所に要望書を提出しています。

電話番号だけで誰でも追跡 | OSINT調査

電話番号だけで誰でも追跡 | OSINT調査

あなたは、OSINT 調査員、CTF プレーヤー、または単にスパム電話を受けている人である可能性があります。広告で見た番号を確認しようとしている人。

ジョーダン・ニーリー殺害と「愛国的」人種差別の問題

米国は、人種差別的な行動と善良な米国人であることを同一視しないという重要な一歩を踏み出すことができるだろうか?

ジョーダン・ニーリー殺害と「愛国的」人種差別の問題

[警告: このエッセイには、ジョーダン ニーリー殺害の犯人を賞賛する人々のスクリーンショットが含まれています。] 法執行当局はついに、そしておそらくはしぶしぶではありましたが、ジョーダン ニーリーを死ぬまで首を絞めた男、ダニエル ペニーをその殺人罪で起訴しました。