
- ReactJS 教程
- ReactJS - 首頁
- ReactJS - 簡介
- ReactJS - 路線圖
- ReactJS - 安裝
- ReactJS - 特性
- ReactJS - 優點與缺點
- ReactJS - 架構
- ReactJS - 建立 React 應用
- ReactJS - JSX
- ReactJS - 元件
- ReactJS - 巢狀元件
- ReactJS - 使用新建立的元件
- ReactJS - 元件集合
- ReactJS - 樣式
- ReactJS - 屬性 (props)
- ReactJS - 使用屬性建立元件
- ReactJS - props 驗證
- ReactJS - 建構函式
- ReactJS - 元件生命週期
- ReactJS - 事件管理
- ReactJS - 建立一個事件感知元件
- ReactJS - 在 Expense Manager 應用中引入事件
- ReactJS - 狀態管理
- ReactJS - 狀態管理 API
- ReactJS - 無狀態元件
- ReactJS - 使用 React Hooks 進行狀態管理
- ReactJS - 使用 React Hooks 實現元件生命週期
- ReactJS - 佈局元件
- ReactJS - 分頁
- ReactJS - Material UI
- ReactJS - Http 客戶端程式設計
- ReactJS - 表單程式設計
- ReactJS - 受控元件
- ReactJS - 非受控元件
- ReactJS - Formik
- ReactJS - 條件渲染
- ReactJS - 列表
- ReactJS - Keys
- ReactJS - 路由
- ReactJS - Redux
- ReactJS - 動畫
- ReactJS - Bootstrap
- ReactJS - 地圖
- ReactJS - 表格
- ReactJS - 使用 Flux 管理狀態
- ReactJS - 測試
- ReactJS - CLI 命令
- ReactJS - 構建和部署
- ReactJS - 示例
- Hooks
- ReactJS - Hooks 簡介
- ReactJS - 使用 useState
- ReactJS - 使用 useEffect
- ReactJS - 使用 useContext
- ReactJS - 使用 useRef
- ReactJS - 使用 useReducer
- ReactJS - 使用 useCallback
- ReactJS - 使用 useMemo
- ReactJS - 自定義 Hooks
- ReactJS 高階
- ReactJS - 可訪問性
- ReactJS - 程式碼分割
- ReactJS - 上下文
- ReactJS - 錯誤邊界
- ReactJS - 轉發 Refs
- ReactJS - 碎片
- ReactJS - 高階元件
- ReactJS - 整合其他庫
- ReactJS - 最佳化效能
- ReactJS - Profiler API
- ReactJS - 埠
- ReactJS - 無 ES6/ECMAScript 的 React
- ReactJS - 無 JSX 的 React
- ReactJS - 調和
- ReactJS - Refs 和 DOM
- ReactJS - 渲染 Props
- ReactJS - 靜態型別檢查
- ReactJS - 嚴格模式
- ReactJS - Web Components
- 其他概念
- ReactJS - 日期選擇器
- ReactJS - Helmet
- ReactJS - 內聯樣式
- ReactJS - PropTypes
- ReactJS - BrowserRouter
- ReactJS - DOM
- ReactJS - 輪播圖
- ReactJS - 圖示
- ReactJS - 表單元件
- ReactJS - 參考 API
- ReactJS 有用資源
- ReactJS - 快速指南
- ReactJS - 有用資源
- ReactJS - 討論
ReactJS - 巢狀元件
React 中的巢狀元件是指與另一個元件相關的元件。您也可以將其視為父元件內的子元件;但它們不是使用繼承的概念連結在一起,而是使用組合的概念。因此,所有元件都巢狀在一起以建立更大的元件,而不是較小的元件從父元件繼承。
React 元件是 React 應用的構建塊。React 元件由多個單個元件組成。React 允許將多個元件組合在一起以建立更大的元件。此外,React 元件可以巢狀到任意級別。
巢狀元件將使您的程式碼更有效率和結構化。但是,如果元件沒有正確巢狀或組合,則程式碼可能會變得更復雜,從而導致效率降低。讓我們在本章中看看如何正確地組合 React 元件。
FormattedMoney 元件
讓我們建立一個元件 FormattedMoney,在渲染之前將金額格式化為兩位小數。
步驟 1 - 在您喜歡的編輯器中開啟 expense-manager 應用。
在 src/components 資料夾中建立一個名為 FormattedMoney.js 的檔案,並匯入 React 庫。
import React from 'react';
步驟 2 - 然後建立一個類 FormattedMoney,透過擴充套件 React.Component 來實現。
class FormattedMoney extends React.Component { }
接下來,引入帶有引數 props 的建構函式,如下所示 -
constructor(props) { super(props); }
建立一個方法 format() 來格式化金額。
format(amount) { return parseFloat(amount).toFixed(2) }
建立另一個方法 render() 來輸出格式化的金額。
render() { return ( <span>{this.format(this.props.value)}</span> ); }
在這裡,我們透過 this.props 傳遞 value 屬性來使用 format 方法。
步驟 3 - 接下來,將元件指定為預設匯出類。
export default FormattedMoney;
現在,我們已經成功建立了我們的 FormattedMoney React 元件。
import React from 'react'; class FormattedMoney extends React.Component { constructor(props) { super(props) } format(amount) { return parseFloat(amount).toFixed(2) } render() { return ( <span>{this.format(this.props.value)}</span> ); } } export default FormattedMoney;
FormattedDate 元件
讓我們建立另一個元件 FormattedDate 來格式化並顯示支出的日期和時間。
步驟 1 - 在您喜歡的編輯器中開啟 expense-manager 應用。
在 src/components 資料夾中建立一個檔案 FormattedDate.js,並匯入 React 庫。
import React from 'react';
步驟 2 - 接下來,建立一個類,透過擴充套件 React.Component 來實現。
class FormattedDate extends React.Component { }
然後引入帶有引數 props 的建構函式,如下所示 -
constructor(props) { super(props); }
步驟 3 - 接下來,建立一個方法 format() 來格式化日期。
format(val) { const months = ["JAN", "FEB", "MAR","APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"]; let parsed_date = new Date(Date.parse(val)); let formatted_date = parsed_date.getDate() + "-" + months[parsed_date.getMonth()] + "-" + parsed_date.getFullYear() return formatted_date; }
建立另一個方法 render() 來輸出格式化的日期。
render() { return ( <span>{this.format(this.props.value)}</span> ); }
在這裡,我們透過 this.props 傳遞 value 屬性來使用 format 方法。
步驟 4 - 接下來,將元件指定為預設匯出類。
export default FormattedDate;
現在,我們已經成功建立了我們的 FormattedDate React 元件。完整的程式碼如下 -
import React from 'react'; class FormattedDate extends React.Component { constructor(props) { super(props) } format(val) { const months = ["JAN", "FEB", "MAR","APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"]; let parsed_date = new Date(Date.parse(val)); let formatted_date = parsed_date.getDate() + "-" + months[parsed_date.getMonth()] + "-" + parsed_date.getFullYear() return formatted_date; } render() { return ( <span>{this.format(this.props.value)}</span> ); } } export default FormattedDate;