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 グリッドレイアウトを使用してレスポンシブな縦棒グラフを作成する方法

推薦する

mini-vueレンダリングのシンプルな実装

目次序文ターゲット最初のステップ:ステップ2:ステップ3:ステップ4:要約する序文現在主流のフレーム...

React 非親子コンポーネントパラメータ渡しのサンプルコード

React は、ユーザー インターフェイスを構築するための JavaScript ライブラリです。 ...

CSS3 背景コントロールプロパティと色遷移を使用してグラデーション効果を実現します。

CSS3 背景画像関連互換性: IE9+背景クリップ 背景画像描画領域background-cli...

MySQL データベースで UTF-8 エンコードを設定する方法

/etc/my.cnf または /etc/mysql/my.cnf ファイルを変更する [クライアン...

UbuntuはPythonスクリプトのサンプルコードを定期的に実行する

オリジナルリンク: https://vien.tech/article/157序文この記事では、Ub...

Jenkins を通じて None のイメージを定期的にクリーンアップする方法

序文継続的なコード配信のプロセスで、Jenkins を利用して Docker イメージを作成すると、...

TypeScript とは何ですか?

目次1. JavaScriptの問題2. TypeScriptの利点3. TypeScriptの欠点...

メンテナンス可能なJSコードの書き方を教えます

目次保守可能なコードとは何ですか?コード規約1. 読みやすさ2. 変数と関数の命名3. 透過的な変数...

MySQL 5.7 でルートパスワードを変更する方法

MySQL 5.7 以降では、多くのセキュリティ更新が追加されました。旧バージョンのユーザーは慣れて...

テーブルを開く際のMySQLスレッドの問題の解決方法

問題の説明最近、MySQL5.6.21サーバーがありました。アプリケーションがリリースされた後、同時...

MySQL マスター スレーブ データが矛盾しています。プロンプト: Slave_SQL_Running: 解決策はありません

この記事では、MySQL マスターとスレーブ データ間の不一致の解決方法と、プロンプト「Slave_...

JS 1次元配列を3次元配列に変換する例

今日、CSDN の Q&A セクションで友人が質問をしているのを見ました。彼は 1 次元配列...

HTML チュートリアル: 定義リスト

<br />原文: http://andymao.com/andy/post/104.h...

MySQLは、統計クエリを最適化するために、sum、case、whenを巧みに使用します。

私は最近、会社で統計レポートの開発に関わるプロジェクトに取り組んでいました。データの量が比較的多かっ...

grep を使用して MySQL エラー ログ情報を取得する方法の詳細な説明

MySQL のメンテナンスを容易にするために、エラー情報を収集するためのインターフェースを提供するス...