React Props – React 白話文運動 09

更新 發佈閱讀 8 分鐘

前言

建立React專案 – React 白話文運動 08 介紹如何建立一個 React 專案:建置環境、建置專案、啟動專案。

這一篇則會針對 React 語法進一步做講解, React JSX – React 白話文運動 06 學會了如何建立一個 React 元件,並且學會了元件之間有父子元件的關係。這篇會介紹 React Props 的概念,包含了:React 元件宣告、React Props。

React 元件宣告

在這邊先講解一下 React 元件的語法以及宣告,先使用前篇 JSX 文章中的語法來講解。

import React from 'react';
import ReactDOM from 'react-dom/client';

const myElement = (
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Cherries</li>
</ul>
);

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(myElement);

用以上的程式碼可以知道,首先宣告了一個元件叫做 myElement,並且在 root 做渲染。不過除了在一個檔案中進行渲染以外,也可以從另一個檔案中載入已寫好的元件。

因此先重新針對以上檔案做一下修改,檔名命名為  app.js。另外宣告了一個元件叫做 fruit.jsx,這邊也進行兩種宣告。

app.js

import React, { Component } from 'react';
import Fruit from './fruits';

class App extends Component {
render() {
return (
<div className="App">
<ul>
<Fruit fruit_name="banana"/>
<Fruit fruit_name="apple"/>
</ul>
</div>

);
}
}

export default App;

fruits.jsx

函式宣告

import React from 'react';

const Fruit = (props) => {
return <p> this is {props.fruit_name}.</p>
}

export default Fruit;

類別宣告

import React from 'react';

class Fruit extends React.Component {
render() {
return (
<p> this is {this.props.fruit_name}.</p>
);
}
}

export default Fruit;

以上兩種宣告方式皆可以傳入 props,不過現在主流還是直接使用函式宣告,寫法相對簡潔。

React Components、 Component instance、 Elements 差異

  1. React element 在 JSX 中,是由 HTML element 及 JavaScript 構成的。
  2. Component 是函式宣告或是類別宣告中的回傳值。
  3. Component instance 則是 Component 的實例。
import React, { Component } from 'react';

const Fruit = (props) => { // Fruit() 為component
return <p> this is {props.fruit_name}.</p> // <p></p> 裡面的為element
}

const banana = <Fruit fruit_name="banana" /> // banana 為元件的實例 component instance

class App extends Component {
render() {
return (
<div className="App">
<ul>
{banana}
<Fruit fruit_name="apple" />
</ul>
</div>

);
}
}

export default App;

React Props

在父元件以及子元件中,如果要傳遞參數值,類似函數中的引數(argument)概念的話,可以使用 props 做傳遞。不過函數宣告的元件以及類別宣告的元件還是會有些許的不同。

函數宣告

可以發現函數宣告類似於引數,因此外部元件做使用時,只要使用參數的方式就可以傳入,而函式元件本身只要使用 props.[變數名稱] 就可以傳入。

import React from 'react';

const Fruit = (props) => {
return <p> this is {props.fruit_name}.</p>
}

export default Fruit;

類別宣告

類別本身是物件導向程式語言會有的概念,一個類別中會有屬於自己的變數,並且透過 { this.props.[變數名稱]} 來去做 props 的傳入。

import React from 'react';

class Fruit extends React.Component {
render() {
return (
<p> this is {this.props.fruit_name}.</p>
);
}
}

export default Fruit;

結語

本篇文章除了講解了 React props 參數傳遞的概念以外,也講解了不同方式的元件宣告。

另外也講解了,React Components、 Component instance、 Elements 差異。

希望以上的內容可以對讀者有幫助。

如果有任何建議與疑問也歡迎留言!

引用

React白話文運動10-React Props

React 白話文運動系列

建立React專案 – React 白話文運動 08

Babel & Webpack & NPM – React 白話文運動 07

React JSX – React 白話文運動 06

React 運作原理 – React 白話文運動 05

JavaScript 高階函式 – React 白話文運動 04

JavaScript Async Await – React 白話文運動 03

JavaScript ES6 Object – React 白話文運動 02

JavaScript ES6 – React 白話文運動 01


留言
avatar-img
Hogan|軟體工程師沙龍
18會員
13內容數
希望能透過「React框架白話文運動」系列文章,利用口語化語表以及簡單的程式碼範例,能讓讀者更明白React的各種應用。 系列文章會講述以下: 1. 了解 ES6 JavaScript 語法 2. 了解 React 的運作原理 3. 了解 React 的狀態管理 4. 使用 React Hook管理狀態並且存取資料
2023/12/14
建立React專案-React白話文運動:前一篇文章介紹了三個名詞,分別是:Babel 是什麼?Webpack 是什麼?Npm 是什麼?這一篇則是會手把手建立 React 專案,包含:建置環境、建立 React 專案、啟動專案、如何使用 React 擴充套件。這邊也包含:官方 CRA 建置環境以及自
Thumbnail
2023/12/14
建立React專案-React白話文運動:前一篇文章介紹了三個名詞,分別是:Babel 是什麼?Webpack 是什麼?Npm 是什麼?這一篇則是會手把手建立 React 專案,包含:建置環境、建立 React 專案、啟動專案、如何使用 React 擴充套件。這邊也包含:官方 CRA 建置環境以及自
Thumbnail
2023/12/11
前言這一篇會針對三個名詞做一些解釋,這些名詞是建立 React 專案,需要會的工具,包含了:Babel 是什麼?Webpack 是什麼?Npm 是什麼?當然主要介紹的是使用這些工具的概念,但是還是有其他工具可以做選擇,例如:Npm 之於 Yarn。這一篇會針對三個名詞做一些解釋,這些名詞是建立 R
Thumbnail
2023/12/11
前言這一篇會針對三個名詞做一些解釋,這些名詞是建立 React 專案,需要會的工具,包含了:Babel 是什麼?Webpack 是什麼?Npm 是什麼?當然主要介紹的是使用這些工具的概念,但是還是有其他工具可以做選擇,例如:Npm 之於 Yarn。這一篇會針對三個名詞做一些解釋,這些名詞是建立 R
Thumbnail
2023/12/07
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發,使開發人員能夠創建可重覆使用的元件來完成前端頁面。JSX 也是目前我們比較常看到的 React 寫法 ,因此接下來會介紹,JSX 是什麼?JSX 語法以及使用 JSX 建構 React 元件。
Thumbnail
2023/12/07
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發,使開發人員能夠創建可重覆使用的元件來完成前端頁面。JSX 也是目前我們比較常看到的 React 寫法 ,因此接下來會介紹,JSX 是什麼?JSX 語法以及使用 JSX 建構 React 元件。
Thumbnail
看更多
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
看完上篇 4 位新成員的靈魂拷問,是不是意猶未盡?別急,野格團新血的驚喜正接著登場!今天下篇接力的另外 4 位「個人主題專家」,戰力同樣驚人──領域從旅行美食、運動、商業投資到自我成長;這些人如何維持長跑般的創作動力?在爆紅的文章背後,又藏著哪些不為人知的洞察?5 大靈魂拷問繼續出擊
Thumbnail
看完上篇 4 位新成員的靈魂拷問,是不是意猶未盡?別急,野格團新血的驚喜正接著登場!今天下篇接力的另外 4 位「個人主題專家」,戰力同樣驚人──領域從旅行美食、運動、商業投資到自我成長;這些人如何維持長跑般的創作動力?在爆紅的文章背後,又藏著哪些不為人知的洞察?5 大靈魂拷問繼續出擊
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
在程式任何地方都能修改各種react組件狀態的做法分享
Thumbnail
在程式任何地方都能修改各種react組件狀態的做法分享
Thumbnail
2023 Vue直播班筆記 - 動態路由Props,接續之前的一般動態路由。分為 "寫死" 及 "彈性" 兩種。
Thumbnail
2023 Vue直播班筆記 - 動態路由Props,接續之前的一般動態路由。分為 "寫死" 及 "彈性" 兩種。
Thumbnail
這系列是我在 2023 六角學院 Vue作品實戰班的筆記,筆記以本人理解的方式記錄。此篇主題為 Slot Props 進階應用 ,其中包含單筆資料、多筆資料。
Thumbnail
這系列是我在 2023 六角學院 Vue作品實戰班的筆記,筆記以本人理解的方式記錄。此篇主題為 Slot Props 進階應用 ,其中包含單筆資料、多筆資料。
Thumbnail
這是一個介紹React Text Wrap Balancer套件的文章,主要內容包括套件的使用方式,常見的實作方式和一些注意事項。文章內容較長,內容大概是在介紹套件的使用方法、使用技巧和注意事項。
Thumbnail
這是一個介紹React Text Wrap Balancer套件的文章,主要內容包括套件的使用方式,常見的實作方式和一些注意事項。文章內容較長,內容大概是在介紹套件的使用方法、使用技巧和注意事項。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News