2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[React]そもそもDOMとか仮想DOMって何よ?

Last updated at Posted at 2023-10-21

Reactの勉強をする時、特にHooksを勉強する時とかよく「レンダリング」、「マウント」とか、useEffectだと「アンマウント」が出てきたりして「なんだっけ?」と思って何回も出てくるたびに調べ直した人は多いはず。
今回はその説明の大前提である「DOM」とか「仮想DOM」についてわかりやすく整理してみます。

Webページを想像してみて下さい。

そこには文章や画像、ボタンなど、たくさんの要素が表示されています。これを一つ一つのブロックや箱と考えてみると、それぞれの箱には内容や位置、大きさなどの情報があります。

この各々の「箱」の情報や関係性をプログラムで扱うためのものが「DOM(Document Object Model)」です。

可視化: DOM

想像してみてください。

📦 <- これがWebページ全体
├ 📕 ← これがタイトル(例:<h1>タグ)
├ 📗 ← これが段落(例:<p>タグ)
└ 🖼 ← これが画像(例:<img>タグ)

これがとても単純化されたDOMの例です。実際のWebページにはもっとたくさんの箱(要素)が存在します。

ただ、このDOMを直接変更するのは重たい作業。毎回DOMを変更すると、ページの表示が遅くなったり、ちらつきが発生することも。そこで「仮想DOM」の出番です!

仮想DOMって?

仮想DOMは、名前の通り「仮のDOM」。DOMの複製のようなもので、実際のDOMより軽量です。この仮想DOMでまず変更を行い、その変更を効率よく実際のDOMに反映させます。

可視化: 仮想DOM

実際のDOM: 📦📕📗🖼
変更したい内容: 📗を📘に変更したい!

  1. 仮想DOMで変更を試みる。
    📦📕📘🖼

  2. 実際のDOMとの違いを検出。
    📗と📘が異なる。

  3. 実際のDOMに変更を適用。
    📦📕📘🖼

このように、仮想DOMを使うことでWebページの更新がスムーズに、そして高速に行えるのです。

次回はこれらの知識をもとにレンダリングとマウントについて、それらの発生時期?について整理してみます。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?