🤚
在React中過度使用<div>的問題及其他常用HTML標籤的介紹
前言
作為一個前端新手有點太過依賴 <div> 了,所以這篇文章會說說在 React 中太過使用<div> 會有的一些問題,再來介紹其他會用的 HTML tag。
在 React 中 使用 <div> 的優缺點?
缺點
- 會在 DOM 中產生不必要的節點。
import "./styles.css";
export default function App() {
const hasActiveSubscription = true;
return (
<div className="buttonContainer">
<button>Vince</button>
<div>
<button>Chandler</button>
<button>Monkey</button>
</div>
</div>
);
}

- 特定情況會發生錯誤。
- 比如在繪製 table 表格 的時候,像以下程式碼提供的例子,會造成
<tr>有子元素<div>這樣的 HTML 錯誤結構。
- 比如在繪製 table 表格 的時候,像以下程式碼提供的例子,會造成
export default function App() {
return (
<table>
<tr>
<Columns />
</tr>
</table>
);
}
function Columns() {
return (
<div>
<td>Hello</td>
<td>World</td>
</div>
);
}
優點
- 使用
<React.Fragment>會直接返回一組元素,不會再產生如上圖所示的不必要 DOM 節點。 - 增加效能。
- 清晰、好閱讀的結構。
使用方式
- 可以簡寫成 <>…</> 的方式,差別在於
<React.Fragment>可以加入 key attributes。 - 也可以單純用
<Fragment>import {Fragment} from ‘react’;
使用 Semantic tags 的理由?
- 清晰的程式碼,使得結構更為清楚。
- 增加 SEO 效能。
常用的 Semantic tags
<body>
內有 <header> , <main> & <footer>,這三個部分可以分別打包成 Component。
<header>
-
<nav>導航列 -
<ul>無序 &<ol>有序<li>
-
<Link>像是 HTML 的<a>,點擊後會轉跳為 to 後面輸入的 location 。
<main>
段落
-
<section>段落 &<div>-
<section>跟<div>不同的地方在於在<section>裡面的東西是互相有關連的。
-
-
<article>主要文章 -
<aside>非主文的側欄
輸入
<textarea /><input />
圖片
-
<img>- title 鼠標停留在圖片上的提示文字
- alt 圖片連結失效的替代文字
文字
-
<figcaption>圖片的說明文字 <p>-
<span>是inline 的性質,可以寫在<p>內,用來做區塊內的細部變化。 -
<em>斜體 -
<strong>粗體
連結
-
<a>- 連結
-
href填網址 -
target-
_self在同一個頁面跳轉 -
_blank另開網頁
-
-
- 錨點
-
href填#id,可以用來轉跳到某個 tag 上。
-
- 連結
其他
-
<video>影片 -
<audio>聲音 -
<code>程式碼 -
<time>時間相關 -
<br />換行 -
<hr />分隔線
Discussion