5. 使用 props 向下傳遞資料


Posted by mijouhsieh on 2023-04-19

學習重點 => 網頁中的「資料」會在這些元件之間流動,帶動畫面的改變。
要如何在元件之間傳遞資料呢?

  • 透過 props (properties) 傳遞資料,以「父元件」傳入「子元件」為範例
  • (反之,子元件在更新後,也需要傳遞資料給父元件,後面的單元)

Q1 掌握在 React 世界裡,「資料」要怎麼在元件之間流動。

當你在 Thinking in React 單元建構你對 React 的全局觀時,其實已經初步看過「資料流動」的縮影了,你可以到 Thinking in React 的第四步驟 - Step 4: Identify where your state should live 回顧。補
pass-props-in2Steps.png
pass-props-step1

pass-props-step2

Q2 在子元件裡如何讀取父元件傳進來的 props?

pass-props-step2

元件的本質是 function,所有傳入的參數都會包在一個名叫 props 的物件中,是 React 專用的特殊名稱,你可以透過 console.log(props) 來觀察 props 的資料結構。補

取用 props 的值有兩種寫法:

  • 一種是 props.屬性名稱 ,傳入參數時傳 props, 在子元件中能以props.size 讀取;
  • 另一種是解構賦值的寫法,傳入參數時傳 {size} ,在子元件中就能直接以 size 來讀取。

請利用範例來幫助你了解兩種用法,可以自行修改成另一種。 補


Q3: 在 React 中,props 的功能是什麼?

像是HTML標籤內的屬性。
props 是傳給JSX tag的資訊。
父元件可以傳props給子元件。

Q4: 除了原始資料型別 (Primitive data types) 和物件型別 (Object types) 可以傳遞,函數是否也可以傳遞?

可以。
只要是JS表達式,都可以寫入curly braces { }內,
寫法: 屬性={呼叫函式}

Q5:把 props 傳遞到 Component 時,props 的型別可以有哪些?

字串、數值、陣列、函式

Q6:請解釋 props 中的 children 及說明它的功能。

props-think-independently

Q7:使用 Component Children Prop 時,children 只會有一個嗎?


passing-JSX-as-children-code.png
passing-JSX-as-children-description.png

THX CHATGTP 不一定 (補

Q8:當不定量或是大量 props 要送給 child component 時,可以怎麼寫?

THX CHATGTP
當不定量或大量的props要傳遞給子元件時,可以使用JSX的展開語法(Spread Syntax) 來傳遞所有的props。
在父元件中,子元件以curly braces{ }包住 三個點(...)展開props

function Profile(props) {
  return (
    <div className="card">
      <Avatar {...props} />
    </div>
  );
}

這樣做會將所有的props傳給子元件。
子元件可以使用解構賦值的方式來取得需要的props,也可以通過props對象來訪問所有的props。
這種方式不僅可以簡化代碼,還可以保持代碼的清晰度和可讀性。
但需要注意的是,不要過度使用展開語法,以免過度複雜化代碼和降低性能。


#Props #JSX Spread Syntax #destructure #Passing JSX as children #children prop







Related Posts

Web Storage2: HTTP, Session & Cookie

Web Storage2: HTTP, Session & Cookie

D13_ ALG101-Unit1

D13_ ALG101-Unit1

JS Advanced --this

JS Advanced --this


Comments