iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
自我挑戰組

React 個人讀書會系列 第 13

Day 13 - 打造靈活的元件:Children Prop

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20230926/20103817EwHF93VFDf.jpg

什麼是 Children Prop?

在 React 中,Children Prop 是每個 React 元件會自動接收的一個特殊屬性。

// 每個元件都會有一個名為 children 的 prop
function Button({ children }) {
  return (...)
}

Children Prop 是位於元件開始標籤和結束標籤之間的所有內容,這意味著我們可以將任何 JSX 標記傳遞給元件,然後該元件可以使用這些 JSX 標記並將其呈現。

// 放在元件標籤裡的內容就會被 Children Prop 接收
<Button>
  <span>Hello</span>
</Button>

使用 Children Prop

讓我們以一個實際的範例來說明為何需要使用 Children Prop,假設我們正在創建一個可重複使用的按鈕元件,它具有一些自定義的屬性,如文字顏色、背景顏色和事件處理。

// Button 元件
function Button({ textColor, bgColor, onClick, text }) {
  return (
    <button
	  style={{ backgroundColor: bgColor, color: textColor }}
	  onClick={onClick}
    >
	  {text}
    </button>
  )
}

當我們有高度客製化元件的需求,此時如果持續增加屬性的種類,那元件將會變得非常複雜。

// Button 元件
function Button({
  textColor,
  bgColor,
  onClick,
  text,
  leftEmoji,
  rightEmoji
}) {
  return (
    <button
	  style={{ backgroundColor: bgColor, color: textColor }}
	  onClick={onClick}
	>
	  {leftEmoji} {text} {rightEmoji}
	</button>
  )
}

這種時候我們就可以使用 Children Prop 來解決這個問題,在 Button 元件的開始標籤和結束標籤之間添加我們想要的內容,Button 元件裡面的 children 屬性就會接收這些內容。

// 在元件的開始結束標籤裡面添加想要的內容,包括 JSX 也可以
function App() {
  return (
    <Button
	  bgColor="#7950f2"
	  textColor="#ffffff"
	  onClick={handleClick}
	>
	  <span>⭐ Click 💼</span>
    </Button>
  )
}

// children 屬性接收外層傳入的內容 <span>⭐ Click 💼</span>
function Button({ textColor, bgColor, onClick, children }) {
  return (
    <button
	  style={{ backgroundColor: bgColor, color: textColor }}
	  onClick={onClick}
    >
	  {children}
    </button>
  )
}

結語

透過 Children Prop,我們能夠簡化元件的設計,同時保持元件的彈性,讓我們能夠輕鬆自定義內容,這是 React 開發中的一個重要技巧。


上一篇
Day 12 - 根據狀態計算:派生狀態
下一篇
Day 14 - 屬性的深層傳遞:Prop Drilling
系列文
React 個人讀書會30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言