1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Basic Study LogAdvent Calendar 2024

Day 8

Reactを勉強し直す 〜 v17 〜

Posted at

はじめに

自分の知識がReact16で止まっていたので再勉強していきます。React16の内容は以下。

次はReact17。

React 17について

React17では新機能追加は “なし”

代わりに、アプリケーション内で複数のReactバージョンを安定して動作させる「段階的アップグレード」が可能になった。

これによって、アップグレード時にメンテナンスされていなくて複数のReactバージョンを混在させた結果、うまく動かないという問題を解消できるようになった。

※ ただし、基本的には一気にアップグレードするのがベストな選択肢と公式ブログには記載されている。

以下以外の変更点はこちらを参照。

イベントデリゲーションの変更

段階的アップグレードを可能にするため、イベントデリゲーションの変更が入った。

イベントデリゲーションとは、イベントリスナーを共通の親要素に設定し、子要素で発生するイベントを親要素でキャプチャして処理する手法である。

<ul id="parent">
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ul>
// liタグの数が増減してもイベントリスナーを新たに追加したりする必要はない
document.getElementById('parent').addEventListener('click', function(event) {
  if (event.target.tagName === 'LI') {
    console.log('Clicked item:', event.target.textContent);
  }
});

React17以前はイベントリスナーがdocumentに登録されていたため、同じページに複数のReactが存在し、それぞれが同じ種類のイベント(例えば、クリックイベント)をリッスンしている場合、イベントが伝播して競合するケースがあった。

しかし、React17ではReactのルートコンテナにバインドされるため、競合する可能性が減少した。以下はReact公式ブログから引用した画像。

react_17_delegation.png

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?