フックを使用して React の要素の配列に対する複数の参照を管理するにはどうすればよいですか?
Nov 03, 2024 am 02:23 AMフックを使用した要素の配列の複数の参照
React では、useRef フックを使用して開発者が要素への DOM 参照を管理できます。通常、ref は単一の要素にアクセスするために使用されます。ただし、このアプローチは要素の配列には適していない可能性があります。
フックを使用して要素の配列の複数の参照を操作するには、少し異なるアプローチが必要です。次の状況を考えてみましょう:
<code class="javascript">const { useRef, useState, useEffect } = React; const App = () => { const elRef = useRef(); const [elWidth, setElWidth] = useState(); useEffect(() => { setElWidth(elRef.current.offsetWidth); }, []); return ( <div> {[1, 2, 3].map(el => ( <div ref={elRef} style={{ width: `${el * 100}px` }}> Width is: {elWidth} </div> ))} </div> ); };</code>
ログイン後にコピー
この例では、配列内の各要素に同じ elRef を渡すだけで複数の ref を作成しようとします。ただし、このアプローチでは最後の要素のみが参照されます。
この問題を解決するには、次の手法を活用できます。
<code class="javascript">const App = props => { const itemsRef = useRef([]); // you can access the elements with itemsRef.current[n] useEffect(() => { itemsRef.current = itemsRef.current.slice(0, props.items.length); }, [props.items]); return props.items.map((item, i) => ( <div key={i} ref={el => (itemsRef.current[i] = el)} style={{ width: `${(i + 1) * 100}px` }} > ... </div> )); };</code>
ログイン後にコピー
この改善されたソリューションでは、itemsRef を使用します。参照を保持する配列。配列を空の配列で初期化します。 useEffect では、props.items 配列の長さと一致するように itemsRef 配列を更新します。これにより、配列内の各項目に対応する参照が確実に存在します。
これで、itemsRef.current[n] を使用して個々の要素の参照にアクセスできるようになります。ここで、n は配列内の要素のインデックスです。
以上がフックを使用して React の要素の配列に対する複数の参照を管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7277
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1285
46


Laravel チュートリアル
1257
25


PHP チュートリアル
1205
29

