JavaScript の useRef と useState の紹介

JavaScript の useRef と useState の紹介

1. useStateフック

useState 、情報を変数内の状態として保存できる組み込みのReact hookです。関数コンポーネントにReact状態を追加できます。次の例では、 useState()状態変数を宣言し、その値は count 変数に格納されます。 setCountこの値を更新するために使用される関数です。

// ReactからuseStateをインポートする

React をインポートし、{useState} を 'react' から取得します。

関数Count() {

  //count という新しい状態変数を宣言します。const [count, setCount] = useState(0);

2. useRefフック

useRef hookは、引数またはパラメータを初期値として受け取り、参照または永続化された変更可能な値を返す組み込みのReact hookです。この参照 (略してrefには、現在のプロパティを使用して取得できる値が含まれています。

次のように、ユーザー入力を refs に保存し、収集したデータを表示することもできます。

//useRefフックをインポートする

Reactをインポートし、{useRef}を"react"から取得します。

デフォルト関数App()をエクスポートする{

  //参照を格納する変数を作成します。const nameRef = useRef();

  関数handleSubmit(e) {

    //送信時にページが再読み込みされないようにする e.preventDefault()

    // 出力名

    console.log(名前参照.現在の値)

  }

  戻る (

    <div className="コンテナ">

      <フォームonSubmit={handleSubmit}>

        <div クラス名="input_group">

          <label>名前</label>

          <input type="text" ref={nameRef}/>

        </div>

        <入力タイプ="送信"/>

      </フォーム>

    </div>

  )

}

3. useRef と useState

  • 状態とは異なり、ref または参照に格納されているデータまたは値は、コンポーネントが再レンダリングされた後でも変更されません。したがって、ref はコンポーネントのレンダリングには影響しませんが、state は影響します。
  • useState 2 つのプロパティまたは配列を返します。 1 つは値または状態であり、もう 1 つは状態を更新する関数です。対照的に、 useRef実際に保存されたデータである 1 つの値のみを返します。
  • 参照値が変更されると、更新や再レンダリングを行わずに更新されます。しかし、 useStateでは、状態またはその値を更新するためにコンポーネントを再度レンダリングする必要があります。

4. RefとStatesを使用するタイミング

refs 、ユーザー入力、 DOM要素属性を取得し、継続的に更新される値を保存する場合に役立ちます。 ただし、コンポーネントに関する情報を保存したり、コンポーネント内のメソッドを使用したりする場合は、 states最適な選択です。

まとめると、これら 2 つのhookはそれぞれ長所と短所があり、状況や目的に応じて使用されます。

JavaScriptuseRefuseStateに関するこの記事はこれで終わりです。JavaScript JavaScript useRefuseStateについてさらに詳しく知りたい場合は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript es6 の新しい配列メソッドの詳細な説明
  • JavaScriptとTypeScriptの関係
  • Springboot で URL の後の jsessionid を削除する方法
  • JS ブロックレベルスコープとプライベート変数の例の分析
  • JavaScriptはクロージャを使用してブロックレベルのスコープ操作をシミュレートします
  • es6ブロックレベルスコープの使用に関する詳細な理解
  • ES6 学習チュートリアル: ブロックレベル スコープの詳細な説明
  • ES6 の詳細な理解のための学習ノート: ブロックレベルのスコープバインディング
  • ES6ではletコマンドを使用してブロックレベルのスコープ例の分析をより簡単に実装します。
  • JavaScript ES 新機能ブロックスコープ

<<:  グリーンスタイルのウェブデザイン作品18点の最新コレクション

>>:  CSS グリッドレイアウトを使用してレスポンシブな縦棒グラフを作成する方法

推薦する

MySQLを監視するためのbinlogログ解析ツールの詳しい説明:Canal

Canal は、Java を使用して開発された Alibaba のオープンソース プロジェクトです...

Mysql+JavaSwing に基づくスーパーマーケット商品管理システムの設計と実装

目次1. 機能紹介2. キーコード2.1 ホームページの機能2.2 製品情報を追加する2.3 データ...

HTML で 2 列レイアウトを実装する方法の例 (左側は固定幅、右側は適応幅)

HTMLは2列レイアウトを実装し、左側は固定幅、右側は適応幅です。実装1: <スタイル>...

Linux 構成 SSH パスワードフリーログイン「ssh-keygen」の基本的な使い方

目次1 SSHとは何か2 SSHパスワードフリーログインを設定する2.1 必要なソフトウェアのインス...

Linux ディスク パーティションの実装の原理と方法の分析

覚えて: IDE ディスク: 最初のディスクは hda、2 番目のディスクは hdb...最初のディ...

httpsウェブサイトにリファラーhttpsとhttpジャンプリファラーを送信させる方法

この記事では、HTTP プロトコルのリファラーのメタデータ パラメータの提案について説明します。この...

MySQL トリガーの定義と使用方法の簡単な例

この記事では、MySQL トリガーの定義と使用方法について説明します。ご参考までに、詳細は以下の通り...

MySQL で指定エンコーディングを実装する際の落とし穴について

前面に書かれた環境: MySQL 5.7+、MySQL データベースの文字エンコードは utf8、テ...

Mac での MySQL と Squel Pro の設定

Node.js の人気に応えて、最近、いくつかのサーバー側機能を実装するために Node.js を使...

ServerManager の起動時にデータベースに接続できないエラーを解決する方法

Servermanager 起動時の接続データベース エラーmgrstart.batを実行しますエラ...

nacos が mysql に接続できない場合の解決策

理由nacos の pom が依存する mysql バージョンが、mysql バージョンと一致してい...

Dockerコンテナが起動直後に終了する問題を解決する

最近、Docker がコンテナの起動時に特定のプロセスを直接実行できるようにする方法を調べていたとこ...

MySQLのREDOログとUNDOログの詳細な説明

MySQL ログ システムで最も重要なログは、REDO ログとアーカイブ ログです。後者は MySQ...

Linux デスクトップ用の 4 つのスキャン ツール

ペーパーレスの世界はまだ到来していませんが、書類や写真をスキャンすることで紙をなくす人が増えています...