日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

React?函數(shù)式組件和類式組件詳情_React

作者:極智視界??????? ? 更新時(shí)間: 2022-09-27 編程語言

前言

React 是?組件化的?的 JS 庫,組件化?也是 React 的核心思想。使用 React 可以構(gòu)建管理自身狀態(tài)的封裝組件,然后對(duì)其組合以構(gòu)成復(fù)雜的 UI。那么什么是組件呢??組件是用來實(shí)現(xiàn)局部功能效果的代碼和資源的集合,包括 html / css / js/ image 等,組件的作用是?簡化代碼、復(fù)用代碼、提高運(yùn)行效率

React 里主要有兩種類型的組件:

  • 函數(shù)式組件 => 基于函數(shù);
  • 類式組件 => 基于類;

1. 函數(shù)式組件

函數(shù)式組件是基于使用?function?定義的函數(shù),函數(shù)式組件 和 普通函數(shù) 最主要的區(qū)別在?調(diào)用的時(shí)候,函數(shù)式組件在渲染的時(shí)候沒有?被人為顯式調(diào)用,而是由 React 內(nèi)部去調(diào)用。來看個(gè)例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>React函數(shù)式組件</title>
</head>
<body>
	<div id="demo"></div>
	
	<!-- 引入react核心庫 -->
	<script type="text/javascript" src="./react.development.js"></script>
	<!-- 引入react-dom,用于支持react操作DOM -->
	<script type="text/javascript" src="./react-dom.development.js"></script>
	<!-- 引入babel,用于將jsx轉(zhuǎn)為js -->
	<script type="text/javascript" src="./babel.min.js"></script>

	<script type="text/babel">
		//1. 創(chuàng)建函數(shù)式組件
		function MyComponent(){
			return <h2>我是函數(shù)式組件</h2>
		}
		//2. 渲染組件到頁面
		ReactDOM.render(<MyComponent/>,document.getElementById('demo'))
	</script>
</body>
</html>

我們先創(chuàng)建一個(gè)盒子,用?id?進(jìn)行唯一標(biāo)識(shí):

<div id="demo"></div>    

引入 react 依賴庫,接著在?script?中先?創(chuàng)建一個(gè)函數(shù)式組件

//1. 創(chuàng)建函數(shù)式組件
function MyComponent(){
	return <h2>我是函數(shù)式組件</h2>
}

然后?渲染組件到頁面

//2. 渲染組件到頁面
ReactDOM.render(<MyComponent/>,document.getElementById('demo'))

? 來分析一下,在執(zhí)行了?ReactDOM.render(<MyComponent/>,...)?之后,react 做了哪些事情呢:

  • (1) react 先解析組件標(biāo)簽?id ==> demo,通過標(biāo)簽?找到了?MyComponent?組件;
  • (2) react 發(fā)現(xiàn)組件是函數(shù)定義的,接著?調(diào)用?這個(gè)函數(shù);
  • (3) react 將函數(shù)返回的?虛擬 DOM?轉(zhuǎn)換為?真實(shí)DOM;
  • (4) 最后呈現(xiàn)在頁面中;

2. 類式組件

類式組件是基于使用?class?定義的類,需要繼承自?React.Component;另外,類式組件中必須實(shí)現(xiàn)?render函數(shù)

來看個(gè)例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>React類式組件</title>
</head>
<body>
	<div id="demo"></div>
	
	<!-- 引入react核心庫 -->
	<script type="text/javascript" src="./react.development.js"></script>
	<!-- 引入react-dom,用于支持react操作DOM -->
	<script type="text/javascript" src="./react-dom.development.js"></script>
	<!-- 引入babel,用于將jsx轉(zhuǎn)為js -->
	<script type="text/javascript" src="./babel.min.js"></script>

	<script type="text/babel">
		//1. 創(chuàng)建類式組件
		class MyComponent extends React.Component {
			render(){
				return <h2>我是類式組件</h2>
			}
		}
		//2. 渲染組件到頁面
		ReactDOM.render(<MyComponent/>,document.getElementById('demo'))
	</script>
</body>
</html>

同樣,我們先創(chuàng)建一個(gè)盒子,用?id?進(jìn)行唯一標(biāo)識(shí):

<div id="demo"></div>    

引入 react 依賴庫,接著在?script?中?創(chuàng)建一個(gè)類式組件

//1. 創(chuàng)建類式組件
class MyComponent extends React.Component {
	render(){
		return <h2>我是類式組件</h2>
	}
}

然后?渲染組件到頁面

//2. 渲染組件到頁面
ReactDOM.render(<MyComponent/>,document.getElementById('demo'))

不難發(fā)現(xiàn),類式組件 和 函數(shù)式組件 不同的地方就是在創(chuàng)建組件的地方,而在渲染的時(shí)候則是一樣。同樣來來分析一下,在執(zhí)行了?ReactDOM.render(<MyComponent/>,...)?之后,react 做了哪些事情呢:

  • (1) react 先解析組件標(biāo)簽?id ==> function,通過標(biāo)簽?找到了?MyComponent?組件;
  • (2) react 發(fā)現(xiàn)組件是用類定義的,接著?new?一個(gè)該類的實(shí)例;
  • (3) react 通過該實(shí)例?調(diào)用?到類原型上的?render?方法;
  • (3) react 將?render?返回的?虛擬 DOM?轉(zhuǎn)換為?真實(shí)DOM;
  • (4) 最后呈現(xiàn)在頁面中;

原文鏈接:https://juejin.cn/post/7126846258366382087

欄目分類
最近更新