歡迎關注前端早茶,與廣東靚仔攜手共同進階
前端早茶專注前端,一起結伴同行,緊跟業界發展步伐~
公眾號作者:廣東靚仔
背景
新的react hook寫法,官方默認setState方法移除了回調函數,但我們有時候的業務場景需要我們同步拿到變量的最新變化值,以便做下一步操作,這時我們可以封裝一個hook通過結合useref通過回調函數來拿到最新狀態值。
Demo代碼如下
import {useEffect, useState, useRef} from "react"; function useCallbackState (state) { const cbRef = useRef(); const [data, setData] = useState(state); useEffect(() => { cbRef.current && cbRef.current(data); }, [data]); return [data, function (val, callback) { cbRef.current = callback; setData(val); }]; } export {useCallbackState};
使用的時候像平常一樣, 回調函數可以傳可以不傳遞
const [data,setData] = useCallbackState({}); setData({}, function (data) { console.log("廣東靚仔", data); })
歡迎關注前端早茶,與廣東靚仔攜手共同進階
前端早茶專注前端,一起結伴同行,緊跟業界發展步伐~
公眾號作者:廣東靚仔