国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

react-高階組件

這篇具有很好參考價(jià)值的文章主要介紹了react-高階組件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、什么是高階組件

高階組件( Higher-Order Component,HOC )是一個(gè)以組件作為參數(shù),返回一個(gè)新組件函數(shù)

  • 高階組件最大的特點(diǎn)就是復(fù)用組件邏輯
  • 高階組件本身并不是 React 的 API,而是React組件的一種設(shè)計(jì)模式,一種組件重用的高級(jí)技巧
  • 高階組件是一個(gè)函數(shù),接收要包裝的組件,返回增強(qiáng)后的組件

二、如何實(shí)現(xiàn)一個(gè)高階組件

高階組件內(nèi)部創(chuàng)建一個(gè)組件,在這個(gè)組件中提供復(fù)用的狀態(tài)邏輯代碼,通過props將復(fù)用狀態(tài)傳遞給被包裝組件 WrappedComponent

  • 創(chuàng)建一個(gè)函數(shù),命名以 with 開頭
  • 指定函數(shù)參數(shù),參數(shù)為組件,所以參數(shù)應(yīng)該以大寫字母開頭
  • 在函數(shù)內(nèi)部創(chuàng)建一個(gè)組件,提供復(fù)用的狀態(tài)邏輯代碼,并返回
  • 在該組件中,渲染參數(shù)組件,同時(shí)將狀態(tài)通過props傳遞給參數(shù)組件
  • 調(diào)用該高階組件,傳入要增強(qiáng)的組件,通過返回值拿到增強(qiáng)后的組件,并將其渲染到頁(yè)面中
function withMouse(WrappedComponent) {
	class Mouse extends React.Component {
		state = {
		    x: 0,
			y: 0,
		}
		render() {
			return (
				<WrappedComponent {...this.state}></WrappedComponent>
			)
		}
	}
	return Mouse
}
const Position = props => (
	<div>
	    鼠標(biāo)位置: {props.x}, {props.y}
	</div>
)

const MousePosition = withMouse(Position)

<MousePosition />

三、高階組件demo

  • 代碼
import React from 'react'

/**
 * 高階組件
 */

// 獲取組件名
// function getDisplayName(WrappedComponent) {
// 	return WrappedComponent.displayName || WrappedComponent.name || 'Component'
// }

// 創(chuàng)建高階組件
function withMouse(WrappedComponent) {
	// 該組件提供復(fù)用的狀態(tài)邏輯
	class Mouse extends React.Component {
		// 初始化state
		state = {
			x: 0,
			y: 0,
		}

		// 渲染UI,可以將state和props 一起傳遞給組件
		render() {
			return (
				<WrappedComponent {...this.state} {...this.props}></WrappedComponent>
			)
		}

		// 組件掛載,監(jiān)聽鼠標(biāo)移動(dòng)
		componentDidMount() {
			window.addEventListener('mousemove', this.handleMouseMove)
		}

		// 組件卸載,移除監(jiān)聽
		componentWillUnmount() {
			window.removeEventListener('mousemove', this.handleMouseMove)
		}

		// 鼠標(biāo)移動(dòng)事件處理程序
		handleMouseMove = e => {
			this.setState({
				x: e.clientX,
				y: e.clientY,
			})
		}
	}

	// 設(shè)置displayName  這個(gè)為了調(diào)試區(qū)分用,可以不設(shè)置
	// Mouse.displayName = `WithMouse${getDisplayName(WrappedComponent)}`

	// 返回增強(qiáng)后的組件
	return Mouse
}

// 位置組件,用來測(cè)試高階組件
const Position = props => (
	<div>
		<h2>
			鼠標(biāo)位置: {props.x}, {props.y}
		</h2>
		MousePosition組件: 接收的參數(shù) a == {props.a}
	</div>
)

// 貓抓老鼠組件,用來測(cè)試高階組件
const Cat = props => (
	<div>
		<img
			src={require('../../assets/images/cat.png')}
			alt="貓"
			height="22px"
			style={{
				position: 'absolute',
				top: props.y - 10,
				left: props.x - 10,
			}}
		/>
		MouseCat組件: 接收的參數(shù) a == {props.a}
	</div>
)

// 獲取增強(qiáng)后的組件
const MousePosition = withMouse(Position)
const MouseCat = withMouse(Cat)

// 使用
class MouseHigher extends React.Component {
	// 渲染增強(qiáng)后的組件
	render() {
		return (
			<div>
				<MousePosition a="111"></MousePosition>
				<MouseCat a="222"></MouseCat>
			</div>
		)
	}
}

export default MouseHigher

  • 效果

react-高階組件,React,react.js,javascript,前端文章來源地址http://www.zghlxwxcb.cn/news/detail-728297.html

到了這里,關(guān)于react-高階組件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • React的高階組件詳解

    高階組件基本介紹 什么是高階組件呢? 在認(rèn)識(shí)高階組價(jià)之前, 我們先來回顧一下什么是高階函數(shù)? 相信很多同學(xué)都知道(聽說過?),也用過高階函數(shù) 高階組件和高階函數(shù)它們非常相似的 高階函數(shù)的定義, 至少滿足以下條件之一: 接受一個(gè)或多個(gè)函數(shù)作為參數(shù); 返回一個(gè)新的函數(shù)

    2024年02月01日
    瀏覽(20)
  • react-高階組件

    react-高階組件

    高階組件( Higher-Order Component,HOC )是一個(gè)以 組件作為參數(shù) ,返回一個(gè) 新組件 的 函數(shù) 。 高階組件最大的特點(diǎn)就是 復(fù)用組件邏輯 高階組件本身并不是 React 的 API,而是React組件的一種設(shè)計(jì)模式,一種組件重用的 高級(jí)技巧 高階組件是一個(gè) 函數(shù) ,接收要包裝的組件,返回增

    2024年02月07日
    瀏覽(26)
  • React:高階組件|ref轉(zhuǎn)發(fā)

    ? ? ? ? 參考文檔:高階組件 – React (reactjs.org) ????????高階組件(Higher-Order Components,簡(jiǎn)稱? HOC )是React中用于復(fù)用組件邏輯的一種高級(jí)技巧。具體而言: 高階組件是參數(shù)為組件,返回值為新組件的函數(shù) 。 ????????組件是將 props 轉(zhuǎn)換為 UI,而高階組件是將組件轉(zhuǎn)換

    2024年02月21日
    瀏覽(26)
  • React - 你使用過高階組件嗎

    React - 你使用過高階組件嗎

    難度級(jí)別:初級(jí)及以上 ????????????????????????????????提問概率:55%? 高階組件并不能單純的說它是一個(gè)函數(shù),或是一個(gè)組件,在React中,函數(shù)也可以做為一種組件。而高階組件就是將一個(gè)組件做為入?yún)?,被傳入一個(gè)函數(shù)或者組件中,經(jīng)過一定的加工處理,最

    2024年04月16日
    瀏覽(20)
  • React組件間數(shù)據(jù)傳遞(彈框和高階組件(HOC)特性實(shí)現(xiàn))

    React組件間數(shù)據(jù)傳遞(彈框和高階組件(HOC)特性實(shí)現(xiàn))

    在現(xiàn)代前端開發(fā)中,React 已經(jīng)成為了最受歡迎的 JavaScript 庫(kù)之一。而在復(fù)雜的應(yīng)用中,不同組件之間的數(shù)據(jù)傳遞問題顯得尤為關(guān)鍵。在本文中,我們將探討一種高效的方法,即如何利用彈框和高階組件特性來實(shí)現(xiàn) React 組件間的數(shù)據(jù)傳遞。我們將通過一個(gè)具體的業(yè)務(wù)場(chǎng)景來深入

    2024年02月11日
    瀏覽(24)
  • React Native Ref轉(zhuǎn)發(fā)/Memo緩存/HOC高階組件/Context上下文

    React Native Ref轉(zhuǎn)發(fā)/Memo緩存/HOC高階組件/Context上下文

    1、使用自定義組件時(shí),實(shí)現(xiàn)外層組件對(duì)原始組件(TextInput)的操作 外層組件使用 ref 屬性 子組件使用 forwardRef 包裹 2、函數(shù)式組件對(duì)外暴露實(shí)例方法(cusomFocus) 子組件 父組件如圖一所示 1 、 避免多余渲染 問題:每次點(diǎn)擊按鈕都會(huì)導(dǎo)致 InfoView 組件發(fā)生重繪,即使每次 setI

    2024年01月21日
    瀏覽(25)
  • JavaScript 框架比較:Angular、React、Vue.js

    在 Web 開發(fā)領(lǐng)域,JavaScript 提供大量技術(shù)??晒┻x擇。其中最典型的三套組合,分別是 MERN、MEAN 和 MEVN。這些首字母相同的選項(xiàng)各自代表不同的技術(shù)加工具組合。為了在這些技術(shù)棧中做出明智選擇,讓我們先從核心組件聊起,再對(duì)各自前端框架(React、Angular 和 Vue)進(jìn)行簡(jiǎn)化比

    2024年01月20日
    瀏覽(36)
  • 前端react入門day02-React中的事件綁定與組件

    前端react入門day02-React中的事件綁定與組件

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動(dòng)力,如果看完對(duì)你有幫助,請(qǐng)留下您的足跡) 目錄 React中的事件綁定 React 基礎(chǔ)事件綁定 使用事件對(duì)象參數(shù)? 傳遞自定義參數(shù)? 同時(shí)傳遞事件對(duì)象和自定義參數(shù)? React中的組件? 組件是什么 React組件 useState? 修改狀態(tài)的規(guī)

    2024年02月06日
    瀏覽(24)
  • 前端react入門day03-react獲取dom與組件通信

    前端react入門day03-react獲取dom與組件通信

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動(dòng)力,如果看完對(duì)你有幫助,請(qǐng)留下您的足跡) 目錄 受控表單綁定? React中獲取DOM 組件通信 父?jìng)髯? 父?jìng)髯?基礎(chǔ)實(shí)現(xiàn) 父?jìng)髯?props說明 父?jìng)髯?- 特殊的prop children 子傳父? 使用狀態(tài)提升實(shí)現(xiàn)兄弟組件通信 使用Context機(jī)制跨

    2024年02月01日
    瀏覽(23)
  • 從javascript到vue再到react:前端開發(fā)框架的演變

    從javascript到vue再到react:前端開發(fā)框架的演變

    目錄 JavaScript: 動(dòng)態(tài)語言的基礎(chǔ) JavaScript:Web開發(fā)的起點(diǎn) Vue.js: 漸進(jìn)式框架的興起 Vue.js:簡(jiǎn)潔、高效的前端框架 React.js: 聲明式UI的革新 React.js:強(qiáng)大、靈活的前端框架 演變之路與未來展望 演變過程 當(dāng)提到前端開發(fā)中的框架時(shí),JavaScript、Vue.js和React.js是三個(gè)最常見的名詞。它

    2024年02月07日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包