react 的高階元件再理解

2021-09-11 10:09:00 字數 2514 閱讀 2211

優化一下 blog 介面,準備每次寫都給大家看一張貓片(大霧)。

最出名的高階元件就是 redux 狀態管理的 connect 元件。大家可以取看一看實現的原始碼。

想要理解高階元件,我們先來看看高階函式的含義。

settimeout(() => ,1000)

複製**

function

foo(x)

}複製**

settimeout()

setinterval()

// ajax

$.get('/api/v1',function())

複製**

上面這兩個就是標準的高階函式

-(原來以前的 hoc 就是高階元件)

// a.js

import react, from

'react';

function

return

class

test

extends

component

}export

default a;

// 其他元件使用的時候

// b.js

import a from

'./a';

class

bextends

component

export

default a(b)

複製**

使用裝飾器 @hoc

-- index.ts

-- /src

---- hocprogress.tsx

---- a.tsx

---- b.tsx

---- c.tsx

複製**

hocprogress.tsx(1)

import react,  from

"react";

function

//先寫 class

return

class

hocform

extends

component

};}export

default hocprogress;

複製**

// hocprogress.tsx

import react, from "react";

return class hocform extends component ;

const percentstyle = %`,

height: "20px",

background:

"url("

};return (%);

}};

}export default hocprogress;

複製**

a.tsx

import react,  from

"react";

// 引入高階函式

import hocprogress from

"./hocprogress.tsx";

class

aextends

component

}// 使用高階元件包裹 a 元件

export

default hocprogress(a, 56);

複製**

b.tsx

import react,  from

"react";

import hocprogress from

"./hocprogress.tsx";

class

bextends

component

}// 我們可以使用 @hocprogress 裝飾器這樣的方式來替代函式包裹這種方式具體的見我的裝飾器的那篇文章。

export

default hocprogress(b, 98);

// c.tsx 同上

複製**

index.ts

import react from "react";

import c from "./c.tsx";

import b from "./b.tsx";

import a from "./a.tsx";

render()}

const rootelement = document.getelementbyid("root");

複製**

React高階元件

想想以前用原生和jquery的專案,上千行的code映入眼簾,瞬間有種昏死過去的衝動。難以維護,改乙個bug可能出現n個bug,真的是很痛苦。於是乎元件化成為了當前前端開發的主流技術。angular vue和react很好的幫我們實現了元件化。但是我們常常也會遇到一種情況,就是兩個元件往往有很多的重...

react高階元件

基本概念 函式可以作為引數被傳遞 函式可以作為返回值輸出 元件作為引數被傳遞,返回值是乙個元件 高階元件是乙個函式 案例 將a元件作為公共元件,bc元件作為a函式的引數,來共享顯示a元件 此處紅框是a元件,紅框裡左邊內容為b元件,右邊內容為c元件 1.建立公共的a元件 將元件a封裝成乙個函式,接收乙...

React 高階元件

高階元件 high order component,hoc 輸入 react 元件 輸出 react 元件 高階元件的作用主要是用來加強元件,通過把基礎元件拆分成很小的粒度,通過高階元件進行增強並返回,以此提高復用性。比如需要開發乙個訊息框,一開始只需要乙個模態框能夠顯示訊息就可以。後來需要多增加 ...