網站首頁 編程語言 正文
1. 介紹
組件允許你將 UI 拆分為獨立可復用的代碼片段,并對每個片段進行獨立構思。從概念上類似于 JavaScript 類或函數。它接受任意的形參( props ),并返回用于描述頁面展示內容的 React元素( jsx )。 定義好的組件一定要有返回值。
react中定義組件的2種方式
- 函數組件(無狀態組件/UI組件)
- 類組件(狀態組件/容器組件)
2. 組件的創建方式
2.1 函數創建組件
注意點:
- 函數組件(無狀態組件):使用JS的函數創建組件;
- 函數名稱必須以大寫字母開頭;
- 函數組件必須有返回值(jsx/null),表示該組件的結構,且內容必須有頂級元素包裹。
使用:
import React, { Component } from 'react'
// 定義函數組件 如果你安裝了jsx插件,則可以通過 【rfc】 完成創建
// 1.使用js中的定義函數
// 2.函數名稱,首字母大寫
// 3.必須要有jsx/null返回值,如果是jsx則一定要有頂層元素包裹
const App = () => {
return (
<div>
<h3>我是一個App函數組件</h3>
</div>
)
}
export default App
2.2 類組件
注意點:
- 使用 ES6 語法的 class 創建的組件(狀態組件)
- 類名稱必須要大寫字母開頭
- 類組件要繼承 React.Component 父類,從而可以使用父類中提供的方法或者屬性
- 類組件必須提供 render 方法,用于頁面結構渲染,結構必須要有頂級元素,且必須 return 去返回
使用:
import React, { Component } from 'react'
// 定義類組件 如果你安裝了jsx插件,則可以通過 【rcc】來創建類組件
// 1.要以es6的定義類來定義 ,必須以class定義類
// 2.此類必須要繼承父類[Component]
// 3.此類必須要有一個成員方法 render,此方法中必須要返回jsx/null,如果是jsx必須要有頂層元素
class App extends Component {
render() {
return (
<div>
<h3>App之類組件</h3>
</div>
)
}
}
export default App
3. 父子組件傳值
組件間傳值,在React中是通過只讀屬性 props 來完成數據傳遞的。
props:接受任意的形參,并返回用于描述頁面展示內容的 React 元素。
props中的數據是不能被修改的,只能讀取。
props是一個單向數據流。 父流向子,子不能直接去修改 props 中的數據。
3.1 函數組件
import React, { Component } from 'react'
// 函數組件間的通信
// 子組件通過入參 props來接收 父組件傳過來的數據 props它是一個對象
const Child = props => {
let {title} = props
console.log(props)
return (
<div>
<h3>Child組件 -- {title}</h3>
</div>
)
}
// 標準寫法
// const Child = ({ title = '默認值', fn }) => {
// console.log(fn())
// return (
// <div>
// <h3>Child組件 -- {title}</h3>
// </div>
// )
// }
const App = () => {
// 在react中的方法,先定義后調用
const fn = () => {
return 'fn'
}
return (
<div>
<h3>App組件</h3>
{/* 通過自定義屬性,可以向子組件傳遞數據 ,此數據它是單向數據流,子組件不能直接修改 */}
<Child title="hello" num={100} obj={{ id: 1 }} fn={fn} />
{/* <Child /> */}
</div>
)
// function fn() {
// return 'function'
// }
}
export default App
3.2 類組件
import React, { Component } from 'react'
// 類組件 父傳子
// 子組件它是通過 成員屬性this.props來接受
class Child extends Component {
render() {
// 得到父組件傳過來的自定義屬性數據
let { title = '默認值', fn } = this.props
console.log(fn())
return (
<div>
<h3>Child組件 -- {title}</h3>
</div>
)
}
}
class App extends Component {
fn = arg => () => 'fn@@@ -- ' + arg
render() {
return (
<div>
<h3>App</h3>
{/* 注意:子組件中打印時會調用函數,所以這里傳的值一定得是函數,而不是執行函數過后的數據 */}
<Child title="我是標題" fn={this.fn(200)} />
</div>
)
}
}
export default App
原文鏈接:https://blog.csdn.net/weixin_45605541/article/details/126962540
相關推薦
- 2022-10-20 C#?Winform消息通知系統托盤氣泡提示框ToolTip控件_C#教程
- 2022-11-09 Android開發實現圖片的上傳下載_Android
- 2022-06-23 C#獲取計算機硬件與操作系統的相關信息_C#教程
- 2023-11-22 Linux下設置環境變量
- 2022-05-22 云原生Kubernetes初始化容器Init使用教程_云其它
- 2022-12-02 基于Go語言實現類似tree命令的小程序_Golang
- 2022-10-10 GO必知必會的常見面試題匯總_Golang
- 2023-04-17 深入理解Django的信號機制_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支