本篇文章帶給大家的內容是關於React元件如何寫? (程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
如何寫一個React元件
在React的世界裡,通常是用class
來宣告一個元件的,它必須繼承自React.Component
。
例如下面的程式碼:
// MyFirstComponent.jsx class MyFirstComponent extends React.Component { state = { text: "Hello React" }; /** 组件生命周期钩子函数:在组件挂载完成后立即被调用 */ componentDidMount() { alert("组件挂载完成!"); } render() { return ( <p>{this.state.text}, I am {this.props.author}!</p> ) } } export default MyFirstComponent;
// index.js import MyFirstComponent from "MyFirstComponent"; /** 渲染结果:<p>Hello React, I am Shaye!</p> */ ReactDOM.render(<myfirstcomponent></myfirstcomponent>, document.getElementById("app"));
以上就是一個常規的React元件寫法,不過我們也可以透過觀察上面的程式碼,發現幾個有趣的地方:
##MyFirstComponent
中有一個函式
componentDidMount是元件生命週期鉤子函式。實際上React為元件設計了一系列的生命週期鉤子函數
MyFirstComponent
中有一個特別的函數
render(),這個函數把類似
html的模板內容
jsx當作傳回值。這是一個必須定義的函數,否則
React會拋出錯誤
#jsx
乍看之下像是一種模板引擎,其實是一種
JavaScript的語法擴展,它的核心概念就是著名的
all in js,它完全是在
JavaScript內部實現的,它和傳統的模板引擎一樣,也可以綁定
js表達式
#jsx
綁定的資料可以很明顯地看出來自兩個物件:
this.state和
this.props;
this.state是
MyFirstComponent內部自訂的元件狀態;
this.props是外部憑藉標籤屬性的形式傳進
MyFirstComponent內部的數據,類似於函數的傳參;
元件生命週期 JSX 元件狀態state 元件屬性props ,你知道該如何寫元件了。
元件生命週期
官方文件已經有非常詳盡的介紹,這裡不再贅述,請點擊這裡查看組件生命週期的官方文件。JSX
你可以任意在JSX當中使用
javaScript表達式,在
JSX當中的表達式要包含在大括號裡。
例如下面的程式碼:
<p>{this.state.content} forever</p>
JSX裡的React元素,例如
p,最終都會被編譯器轉譯,被某些特定函數處理變成一個輕量的
javascript object。例如上面提到的元素
p最終會變成如下的
object:
// 注意: 以下示例是简化过的(不代表在 React 源码中是这样) const pElement = { type: "p", props: { // this.state.clname的值 className: "love", style: { fontSize: "20px" }, // "you"为this.state.content的值 children: ["you", "forever"] } }React就是透過讀取這些物件來操作
DOM並保持數據內容一致。所以,其實你依然在寫
js。所以,
class和
style必須使用在
js中的寫法
例如:
class =>
className再例如:
font-size: 20px; =>
{ fontSize: "20px" }
html一樣使用引號來定義以字串為值的屬性,例如:
className="my-claname"
JSX的事件綁定與原生
html也有一些語法上的不同:
- React的事件命名採用駝峰式寫法,而不是小寫。
- React事件綁定的必須是一個函數對象,不能是字串。
<p>我是一个按钮</p> // 也可以向事件回调函数传递参数 <p> this.handleClick(params)}>我是一个按钮</p>
元件狀態state
state是私人的,完全受控於目前組件。既然是狀態,那麼就會有更新的需求,如何更新呢?
程式碼範例:
// 对`this.state`或者它的属性直接`=`赋值,将永远不会触发组件渲染,必须使用`setState()` // 在组件的生命周期钩子函数中调用this.setState() componentDidMount() { this.setState({ content: "lalalala" }) } // 在组件的自定义函数中调用this.setState() handleClick = () => { this.setState({ content: "uauauaua" }) }
setState()是React中唯一一個動態更新元件的途徑,當它被呼叫之後,自身元件以它的所有子元件都會觸發重渲染
特別地,
state同樣也可以作為屬性傳遞給子元件;
setState()詳細文件
元件屬性props
props是父元件傳遞下來的數據,一般是來自父元件的
state或元件的其他成員變數。並且,
props是唯讀的,元件永遠無法修改自己的
props。只有在父元件呼叫setState()
之後才能使子元件的屬性改變並重新渲染。
props只能從上往下傳,元件也只能修改自身私有的
state,代表整個應用程式的資料流只能是
自上往下的單向資料流
總結#
元件生命週期 JSX 元件狀態state 元件屬性props 再加上一個自上而下的單一向資料流,這些便是React元件最基本的特點了吧!
相關推薦:
以上是React元件如何編寫? (代碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

記事本++7.3.1
好用且免費的程式碼編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

WebStorm Mac版
好用的JavaScript開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),