React の経験がある人なら、コンポーネントインスタンスオブジェクトや DOM オブジェクトを取得するために使用できる ref をよくご存知だと思います。 従来の使用法に加えて、useRef フック関数は「レンダリング サイクル全体にわたって」データを保存することもできます。 まず、その伝統的な使用法を見てみましょう。 'react' から React、{ useState、useEffect、useMemo、useRef } をインポートします。 デフォルト関数App(props)をエクスポートする{ 定数[count, setCount] = useState(0); 定数doubleCount = useMemo(() => { 2 * カウントを返します。 }, [カウント]); const カウンタRef = useRef(); 使用効果(() => { document.title = `値は ${count} です`; console.log(カウンタ参照.current); }, [カウント]); 戻る ( <> <button ref={couterRef} onClick={() => {setCount(count + 1)}}>カウント: {count}、double: {doubleCount}</button> </> ); } このコードは、useRef を使用して counterRef オブジェクトを作成し、それをボタンの ref 属性に割り当てます。このように、couterRef.current にアクセスすることで、ボタンに対応する DOM オブジェクトにアクセスできます。 それでは、データを保存する方法を見てみましょう。 コンポーネント内に、レンダリング サイクルを超えて存続できるもの、つまりコンポーネントが複数回レンダリングされた後も一定のままであるプロパティはありますか?最初に思い浮かぶのは状態です。そうです、コンポーネントの状態は複数回のレンダリング後も変更されない場合があります。ただし、状態の問題は、状態が変更されると、コンポーネントが再レンダリングされることです。 現時点では、useRef はレンダリング サイクル全体にわたってデータを保存するために使用でき、これを変更してもコンポーネントのレンダリングは発生しません。 'react' から React、{ useState、useEffect、useMemo、useRef } をインポートします。 デフォルト関数App(props)をエクスポートする{ 定数[count, setCount] = useState(0); 定数doubleCount = useMemo(() => { 2 * カウントを返します。 }, [カウント]); タイマーIDをuseRef()で設定します。 使用効果(() => { タイマーID.current = setInterval(()=>{ setCount(count => count + 1); }, 1000); }, []); 使用効果(()=>{ if(カウント > 10){ タイマーID.currentをクリアします。 } }); 戻る ( <> <button ref={couterRef} onClick={() => {setCount(count + 1)}}>カウント: {count}、double: {doubleCount}</button> </> ); } 上記の例では、ref オブジェクトの current プロパティを使用してタイマー ID を保存し、複数回のレンダリング後にタイマー ID を保存して、タイマーを正常にクリアできるようにしています。 React における useRef の具体的な使い方についてはこれで終わりです。React の useRef に関するより詳しい内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Centos7.x での Nginx のインストール、SSL 設定、一般的なコマンドの詳細な説明
長い間ブログを書いていませんでした。先週、プロジェクトをテストしたところ、いくつかのバグが見つかりま...
ウェブデザイナーでもUIデザイナーでも、ログインページや登録ページのデザインは必ず経験しなければなら...
目次1. WAFの背景2. WAFとは3. 動作原理4. WAF機能5. WAFと従来のファイアウォ...
略語を使用すると、CSS ファイルのサイズが小さくなり、読みやすくなります。 CSS 省略形の主なル...
MySQLとElasticsearch間のデータ非対称性問題の解決策jdbc-input-plugi...
1. ダウンロード1. インストールパッケージをダウンロードするMySQL ダウンロード パス: h...
目次準備VMware Workstation Pro 16 をインストールするLinux仮想マシンの...
この記事では、CSS3 を使用した Web サイトの商品表示の効果を紹介し、皆さんと共有します。詳細...
一部の障害コード テーブルでは、履歴またはパフォーマンス上の理由から、次の設計パターンが使用されます...
1. システムの Python バージョンに応じて、pip インストール パッケージをダウンロードし...
ソフトウェアのグリーンバージョンとインストールバージョンの違いは何ですか?通常、ファイルのインストー...
Google Chrome では、ログインに成功すると、パスワードを記憶するかどうかを尋ねるメッセー...
成熟したデータベース アーキテクチャは、最初から高可用性、高スケーラビリティなどの機能を備えて設計さ...
もう2020年です。飢えた人間は単純なテキストでは満足できなくなり、さまざまなスタイルの派手なテキス...
目次1. Dockerイメージ2. 既存のイメージに基づいてインスタンスを作成する3. ローカルテン...