把 component
做多點變化,製作出 IG 或是一些個人介紹常見的「多連結工具(Bio Link Tools)」,也就是多個超連結在同一個頁面。因此在這邊會做出標題與超連結,仿效出 Bio tool 的效果。
在外面呼叫的 index.js
很簡單, 直接宣告我們要顯示的 component
,其中比較多的變化都在 BioTool
內。
//day14
const root14 = ReactDOM.createRoot(document.getElementById("root"));
root14.render(<BioTool />);
這是我們主要變化的檔案,裡面包含三種不同的呼叫方式,用來呈現不同的組合方式。
首先是建立兩個 component
,把需要的參數一個個放進個別 component
中,分別一對一的把資料放入標題和超連結中。
第二種是 props
有兩個參數,進入了 LinkGroupItem
後,把 props
內設定的 name
和 url
帶出來使用。
第三種也是帶入兩個參數,只是在這個 component
中,他呼叫了超連結的 component
-LinkItem
。經由兩層的物件結構,達到外面傳一次值,後續都可以用到,且物件重複使用的目的。
import LinkItem from "./LinkSample";
import TitleItem from "./TitleSample";
import LinkGroupItem from "./LinkGroupSample";
import LinkGroupItem2 from "./LinkGroupSample2";
function ShowSample() {
return (
<div>
<h1>Developer's favorite websites</h1>
<div>
<TitleItem name="Github"></TitleItem>
<LinkItem url="https://github.com"></LinkItem>
</div>
<div>
<LinkGroupItem
name="Stack Overflow"
url="https://stackoverflow.com"
></LinkGroupItem>
</div>
<div>
<LinkGroupItem2
name="React 中文版"
url="https://zh-hant.reactjs.org"
></LinkGroupItem2>
</div>
</div>
);
}
export default ShowSample;
在第一組中,簡單做出兩組 component
,這兩組中,這邊定義個別的內容與操作,分別是標題 component
和連結的 component
function LinkItem(props) {
return (
<div>
<a href={props.url}>Hyperlink</a>
</div>
);
}
export default LinkItem;
在這份檔案中,時做出超連結的部分,讓這份元件只要關注在超連結的呈現上,其他東西都不需要管。
function LinkItem(props) {
return (
<div>
<a href={props.url}>Hyperlink</a>
</div>
);
}
export default LinkItem;
在第二種中,props
一次帶兩個參數到 LinkGroupItem
的 component
中,分別代表標題的 name
和超連結網址的 url
。
把值帶入到 .jsx
中,直接用屬性的方式把資料叫出來,放在先組好 HTML 的格式中。
function LinkGroupItem(props) {
return (
<div>
<h2>{props.name}</h2>
<a href={props.url}>{props.name}</a>
</div>
);
}
export default LinkGroupItem;
上面只使用一個 component
,但他做了兩個部分,而第三種也是相同的帶值方式,但他在第一層的 component
中又呼叫了一個component
,而這個 component
是利用與第一種相同的元件。這樣的分離寫法,可以做到一個元件多次使用的目的,而且保持格式的一致性
第三種也是帶入兩個參數,只是在這個 component
中,他呼叫了超連結的 component
-LinkItem
。因此在這邊他不用自己處理超連結物件的格式,由 LinkItem
進行管理,只需要把值傳進去就行了。
import LinkItem from "./LinkSample";
function LinkGroupItem2(props) {
return (
<div>
<h2>{props.name}</h2>
<LinkItem url={props.url}></LinkItem>
</div>
);
}
export default LinkGroupItem2;
先在 LinkGroupItem2
這組中顯示標題名稱,並且在標題下呼叫 LinkItem
這個 component
。我們在外層不知道這個 LinkItem
會長什麼樣子,因為他由 LinkItem
所控制。經由這樣的分離寫法,可以做到一個元件多次使用的目的,而且保持格式的一致性。