react hook 官方文件閱讀筆記

2022-06-17 09:00:18 字數 2106 閱讀 7426

usestate

是在函式呼叫時儲存變數的方式 ——usestate是一種新方法,它與 class 裡面的this.state提供的功能完全相同。一般來說,在函式退出後變數就會」消失」,而 state 中的變數會被 react 保留。

const [count, setcount] = usestate(0); 括號裡邊為初始值,count為初始變數名,setcount和count是一對出現,setcount即為設定count的方法。

儲存多個變數就多次呼叫usestate.

為什麼叫usestate而不叫createstate?

「create」 可能不是很準確,因為 state 只在元件首次渲染的時候被建立。在下一次重新渲染時,usestate返回給我們當前的 state。否則它就不是 「state」了!這也是 hook 的名字總是以use開頭的乙個原因。

useeffect  

處理***,可以把useeffecthook 看做componentdidmountcomponentdidupdatecomponentwillunmount這三個函式的組合

componentdidmountcomponentdidupdate不同,使用useeffect排程的 effect 不會阻塞瀏覽器更新螢幕,這讓你的應用看起來響應更快。大多數情況下,effect 不需要同步地執行。在個別情況下(例如測量布局),有單獨的uselayouteffecthook 供你使用,其 api 與useeffect相同。

hook 允許我們按照**的用途分離他們, 而不是像生命週期函式那樣。react 將按照 effect 宣告的順序依次呼叫元件中的每乙個 effect。

useeffect的第二個可選引數: (效能優化時候使用)

useeffect(() => times`;

}, [count]);

count發生變化的時候才更新,如果不變不更新。

如果想執行只執行一次的 effect(僅在元件掛載和解除安裝時執行),可以傳遞乙個空陣列()作為第二個引數。這就告訴 react 你的 effect 不依賴於 props 或 state 中的任何值,所以它永遠都不需要重複執行

另外需要注意:

1.在 hook 中,清除 effect 是設計在同乙個地方執行的,當 effect 返回乙個函式,react 將會在執行清除操作時呼叫它,即在解除安裝元件時執行 clearinterval ,保證了同乙個 effect 的邏輯可以放在一起。

import react,  from "react";

function example() `;

interval = setinterval(() => , 1000);

//若存在,則清除 effect 操作

return clearinterval(interval);

});return (

count is );}

2.自定義 hook 不需要具有特殊的標識。我們可以自由的決定它的引數是什麼,以及它應該返回什麼(如果需要的話)。換句話說,它就像乙個正常的函式。但是它的名字應該始終以 use 開頭。 

import react,  from "react";

function usesetcount(c,n) , 1000);

return clearinterval(interval);

});return count;

}

function examplea(props) );}

function exampleb(props) );}

dubbo官方文件閱讀

一 入門 整體架構 單一架構 垂直架構 mvc 分布式服務架構 rpc 流計算架構 當服務越來越多時,容量評估變得困難,而且小規模的服務也經常造成資源浪費。為了解決這些問題,應新增排程中心,以根據流量管理集群容量並提高集群利用率。目前,用於提高機器利用率的資源排程和治理中心 soa 是關鍵。在大型服...

Spring官方文件閱讀筆記

beanpostprocessor.postprocessafterinstantiation 鉤子 型別轉化convertifnecessary spring建立bean的詳細過程 sqlsessiontemplate.selectlist sqlsessiontemplate.invoke de...

openstack 官方文件閱讀之cells(二)

首次安裝 由於只有乙個api資料庫,因此它的連線資訊儲存在nova.conf檔案中。api database connection mysql pymysql root secretmysql dbserver nova api?charset utf8 由於可能存在多個 cell 資料庫 實際上每...