React組件通信淺析
1、函數(shù)式組件
<script type="text/babel">
// 1. 創(chuàng)建函數(shù)式組件
function Demo() {
// 里面的this是undefined,因?yàn)閎abel編譯后開啟了嚴(yán)格模式
return <h2>我是用函數(shù)定義的組件(適用于【簡(jiǎn)單組件】的定義)</h2>
}
// 2. 渲染組件到頁面
ReactDOM.render(<Demo/>,document.getElementById('test'))
</script>
執(zhí)行了ReactDOM.render(<Demo/>,document.getElementById('test'))之后,React解析組件標(biāo)簽,找到了Demo組件,發(fā)現(xiàn)組件是用函數(shù)定義的,隨后調(diào)用該函數(shù),將返回的虛擬DOM轉(zhuǎn)為真實(shí)DOM呈現(xiàn)在頁面中
注意:①函數(shù)名首字母必須大寫;②函數(shù)要有返回值;③render里面要寫組件標(biāo)簽
2、類式組件
(1)類的基本知識(shí)
<script type="text/javascript" >
//創(chuàng)建一個(gè)Person類
class Person {
//構(gòu)造器方法
constructor(name,age){
//構(gòu)造器中的this是類的實(shí)例對(duì)象
this.name = name
this.age = age
}
//一般方法
speak(){
//speak方法放在類的原型對(duì)象上,供實(shí)例使用
//通過Person實(shí)例調(diào)用speak時(shí),speak中的this就是Person實(shí)例
console.log(`我叫${this.name},我年齡是${this.age}`);
}
}
//創(chuàng)建一個(gè)Student類,繼承于Person類
class Student extends Person {
constructor(name,age,grade){
super(name,age)
this.grade = grade
this.school = '清華大學(xué)'
}
//重寫從父類繼承過來的方法
speak(){
console.log(`我叫${this.name},我年齡是${this.age},我讀的是${this.grade}年級(jí)`);
this.study()
}
study(){
//study方法放在了類的原型對(duì)象上,供實(shí)例使用
//通過Student實(shí)例調(diào)用study時(shí),study中的this就是Student實(shí)例
console.log('我很努力的學(xué)習(xí)');
}
}
class Car {
constructor(name,price){
this.name = name
this.price = price
// this.wheel = 4
}
//類中可以直接寫賦值語句,如下代碼的含義是:給Car的實(shí)例對(duì)象添加一個(gè)屬性,名為a,值為1
a = 1
wheel = 4
static demo = 100
}
const c1 = new Car('奔馳c63',199)
console.log(c1);
console.log(Car.demo);
</script>
1.類中的構(gòu)造器不是必須要寫的,要對(duì)實(shí)例進(jìn)行一些初始化的操作,如添加指定屬性時(shí)才寫。
2.如果A類繼承了B類,且A類中寫了構(gòu)造器,那么A類構(gòu)造器中的super是必須要調(diào)用的。
3.類中所定義的方法,都放在了類的原型對(duì)象上,供實(shí)例去使用。
(1)類式組件
<script type="text/babel">
class MyComponent extends React.Component {
render(){
//render是放在MyComponent的原型對(duì)象上,供實(shí)例使用。
//render中的this是MyComponent的實(shí)例對(duì)象 <=> MyComponent組件實(shí)例對(duì)象。
console.log('render中的this:',this);
return <h2>我是用類定義的組件(適用于【復(fù)雜組件】的定義)</h2>
}
}
//2.渲染組件到頁面
ReactDOM.render(<MyComponent/>,document.getElementById('test'))
</script>
執(zhí)行了ReactDOM.render(<MyComponent/>,document.getElementById('test'))之后,React解析組件標(biāo)簽,找到了MyComponent組件。發(fā)現(xiàn)組件是使用類定義的,隨后new出來該類的實(shí)例,并通過該實(shí)例調(diào)用到原型上的render方法。將render返回的虛擬DOM轉(zhuǎn)為真實(shí)DOM,隨后呈現(xiàn)在頁面中。
到此這篇關(guān)于React組件通信淺析的文章就介紹到這了,更多相關(guān)React組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React中的useEffect useLayoutEffect到底怎么用
這篇文章主要介紹了React中的useEffect useLayoutEffect具體使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-02-02
React類組件中super()和super(props)的區(qū)別詳解
這篇文章給大家詳細(xì)介紹了React類組件中super()和super(props)有什么區(qū)別,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01
react?native?reanimated實(shí)現(xiàn)動(dòng)畫示例詳解
這篇文章主要為大家介紹了react?native?reanimated實(shí)現(xiàn)動(dòng)畫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
React實(shí)現(xiàn)動(dòng)效彈窗組件
最近在使用react開發(fā)項(xiàng)目,遇到這樣一個(gè)需求實(shí)現(xiàn)一個(gè)帶有動(dòng)效的 React 彈窗組件,如果不考慮動(dòng)效,很容易實(shí)現(xiàn),接下來小編通過本文給大家介紹React實(shí)現(xiàn)動(dòng)效彈窗組件的實(shí)現(xiàn)代碼,一起看看吧2021-06-06
用React實(shí)現(xiàn)一個(gè)類 chatGPT 的交互式問答組件的方法詳解
這篇文章主要給大家詳細(xì)介紹如何用React實(shí)現(xiàn)一個(gè)類 chatGPT 的交互式問答組件的方法,文中有詳細(xì)的代碼示例,對(duì)我們學(xué)習(xí)有一定的幫助,需要的朋友可以參考下2023-06-06
React使用Hooks從服務(wù)端獲取數(shù)據(jù)的完整指南
本文將從基礎(chǔ)到高級(jí)用法,詳細(xì)介紹如何在 React 項(xiàng)目中優(yōu)雅地使用 Hooks 進(jìn)行服務(wù)端數(shù)據(jù)獲取,涵蓋錯(cuò)誤處理、加載狀態(tài)、性能優(yōu)化等核心場(chǎng)景,并提供可直接復(fù)用的代碼模板,需要的朋友可以參考下2025-03-03
ReactNative-JS 調(diào)用原生方法實(shí)例代碼
這篇文章主要介紹了ReactNative-JS 調(diào)用原生方法實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10

