react hooks默认是不支持useState的回调的,但有时候因为异步问题,不能及时获取到修改后的值,所以我们可以自定义回调函数
1.先自定义函数
function useCallbackState(od) {
const cbRef = useRef();
const [data, setData] = useState(od);
useEffect(() => {
cbRef.current && cbRef.current(data);
}, [data]);
return [
data,
function (d, callback) {
cbRef.current = callback;
setData(d);
}
];
}
2.初始化时我们使用这个函数
const [activeTabName, setActiveTabName] = useCallbackState('');
3.使用时像setState的用法一样放在变量后边就可以了
setActiveTabName(current[0].title, (activeTabName) => {});