React高階組件使用詳細(xì)介紹
首先 我們要了解什么是高階組件
第一 高階組件必須是一個(gè)函數(shù)
第二 高階組件接收一個(gè)參數(shù),這個(gè)參數(shù)也必須是一個(gè)組件
第三 他的返回值 也是一個(gè)組件
至于高階組件的作用 我們后續(xù)會(huì)講解 本文只是帶大家認(rèn)識(shí)一下高階組件 并手把手帶大家創(chuàng)建一個(gè) 下面我們來(lái)創(chuàng)建一個(gè)react項(xiàng)目
然后在src目錄下創(chuàng)建 文件夾目錄 components
在 components下面創(chuàng)建一個(gè) assist.jsx
assist.jsx 參考代碼如下
import React from "react";
export function assist(Components){
return class extends React.Component{
render(){
return (
<Components {...this.props }/>
)
}
}
}
這就是一個(gè)簡(jiǎn)單的高階組件 首先 我們定義并導(dǎo)出了一個(gè)函數(shù) 他接收一個(gè)參數(shù) 叫Components 到時(shí)你用這個(gè)方法 就需要他的這個(gè)參數(shù)是一個(gè)組件
然后 這個(gè)方法return回去的還是一個(gè)組件 Components 而我們這里的 {…this.props } 表示 將父組件給的props整個(gè)傳給這個(gè)Components組件
然后在 components下創(chuàng)建一個(gè) subset.jsx
參開(kāi)代碼如下
import React,{Fragment} from "react";
export default class subset extends React.Component{
constructor(props){
super(props);
this.state = {
}
}
render(){
return (
<Fragment>
{ this.props.name }
</Fragment>
)
}
}
這里就是簡(jiǎn)單創(chuàng)建了一個(gè)組件 使用了React下的Fragment 然后 在界面中使用了 this.props下的name
這個(gè)name就需要父組件傳入
然后 我們?cè)赾omponents下創(chuàng)建 record.jsx
參考代碼如下
import React from "react";
import subset from "./subset";
import { assist } from "./assist";
const Subset = assist(subset);
export default class record extends React.Component{
constructor(props){
super(props);
this.state = {
name: "小貓貓",
}
}
render(){
return (
<div className="App">
<Subset name = { this.state.name }/>
</div>
)
}
}
此時(shí) 就可以看到 我們r(jià)ecord.jsx同時(shí)引入了 subset.jsx和assist.jsx
用subset組件作為參數(shù) 調(diào)用了 assist下的assist函數(shù) 也就是我們的高階組件
這樣就滿足了 參數(shù)是組件的需求 聲明一個(gè)Subset接受高階組件的返回值 他還是一個(gè)組件
然后在界面中使用了這個(gè)Subset 并傳遞了 name 值 對(duì)應(yīng)本組件的 state下的name
運(yùn)行代碼如下

其實(shí) 相當(dāng)于 將 subset 傳給了assist 而 assist 并沒(méi)有寫(xiě)太多邏輯 只是接受到參數(shù)組件 又使用了參數(shù)組 并將父組件給到 props 給了參數(shù)組件
所以 相當(dāng)于還是subset輸出的
其實(shí)高階組件還是讓邏輯靈活了很多 他的具體場(chǎng)景 我們后續(xù)會(huì)更新
到此這篇關(guān)于React高階組件使用詳細(xì)介紹的文章就介紹到這了,更多相關(guān)React高階組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解React?ISR如何實(shí)現(xiàn)Demo
這篇文章主要為大家介紹了React?ISR如何實(shí)現(xiàn)Demo詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
使用Webpack打包React項(xiàng)目的流程步驟
隨著React應(yīng)用日益復(fù)雜,開(kāi)發(fā)者需要借助模塊打包工具來(lái)管理項(xiàng)目依賴、轉(zhuǎn)換代碼和優(yōu)化性能,Webpack是一款功能強(qiáng)大的模塊打包器,它可以將React項(xiàng)目中的JavaScript、CSS、圖片等資源打包成瀏覽器友好的文件,本文將全面介紹如何使用Webpack打包React項(xiàng)目2025-03-03
React實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)(左右聯(lián)動(dòng))
這篇文章主要為大家詳細(xì)介紹了React實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
React?中hooks之?React.memo?和?useMemo用法示例總結(jié)
React.memo是一個(gè)高階組件,用于優(yōu)化函數(shù)組件的性能,通過(guò)記憶組件渲染結(jié)果來(lái)避免不必要的重新渲染,合理使用React.memo和useMemo可以顯著提升React應(yīng)用的性能,本文介紹React?中hooks之?React.memo?和?useMemo用法總結(jié),感興趣的朋友一起看看吧2025-01-01
詳解如何在項(xiàng)目中使用jest測(cè)試react native組件
本篇文章主要介紹了詳解如何在項(xiàng)目中使用jest測(cè)試react native組件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
使用React和Redux Toolkit實(shí)現(xiàn)用戶登錄功能
在React中,用戶登錄功能是一個(gè)常見(jiàn)的需求,為了實(shí)現(xiàn)該功能,需要對(duì)用戶輸入的用戶名和密碼進(jìn)行驗(yàn)證,并將驗(yàn)證結(jié)果保存到應(yīng)用程序狀態(tài)中,在React中,可以使用Redux Toolkit來(lái)管理應(yīng)用程序狀態(tài),從而實(shí)現(xiàn)用戶登錄功能,需要詳細(xì)了解可以參考下文2023-05-05

