背景当不使用hooks时,我们可以在setState回调函数中获取最新值。在使用reacthooks的时候,只能在useEffect中获取到最新的值,但是在业务场景中我们有时需要同步获取变量的最新变化值,以便进行下一步操作;这时候我们可以封装一个钩子,通过回调函数结合useRef获取最新的状态值。代码import{useEffect,useRef,useState}from'react';/***customuseState*@paramstate*@returns*/constuseSyncState:any=(state:any)=>{constcbRef:{current:any}=使用参考();const[data,setData]=useState(state);useEffect(()=>{cbRef.current&&cbRef.current(data);},[数据]);返回[数据,(val:任何,回调:任何)=>{cbRef.current=callback;设置数据(值);},];};导出默认useSyncState;使用const[data,setData]=useSyncState(0);setData(1,function(data){console.log("我是最新值:",data);})
