若是客官喜歡就點一顆小星星吧, 謝謝啦^_^.react
升級react useState鉤子函數能力,讓狀態只被初始化一次,特殊適合傳入一些比較重的狀態場景使用,從而節省函組件重複渲染期間初始化重狀態的開銷。git
useState
若是用戶傳入一個重狀態給useState
,在每一渲染期間都會被初始化。github
import React, { useState } from "react";
function Demo() {
const [heavyState] = useState(Array(1000000));
return <h3>{heavyState.length}</h3>;
}
複製代碼
useStateOnce
useStateOnce
接受一個普通狀態和函數型狀態,當用戶傳遞函數型狀態時,該函數只在組件初次渲染期間執行一次,因此你完徹底全能夠使用useStateOnce
完全代替useState
函數
import React from "react";
import useStateOnce from "use-state-once";
const state = () => {
console.log("this function will only been called one time");
return Array(1000000);
};
function Demo() {
const [heavyState, setHeavyState] = useStateOnce(state);
return <h3>{heavyState.length}</h3>;
}
複製代碼
Concent's 的useConcent
接口和useStateOnce
有一樣的效果當用戶傳遞狀態函數做爲參數時。this
若是你打開了CodeSandbox, 你還能夠拷貝其餘文件的內容到
App.js
裏,以便了解更多的concent有趣特性。code