UNPKG

@oiiai/oiiai-taro-react

Version:

OiiaiUI is a miniprogram ui library for TaroJS

24 lines (18 loc) 668 B
import { useEffect, useRef, useState } from "react"; // 自定义 Hook 实现带回调的 setState const useCallbackState = <S>(initialState: S) => { const [state, setState] = useState<S>(initialState); const callbackRef = useRef<((state: S) => void) | null>(null); const setStateWithCallback = (newState: S, callback?: (state: S) => void) => { callbackRef.current = callback || null; setState(newState); }; useEffect(() => { if (callbackRef.current) { callbackRef.current(state); callbackRef.current = null; } }, [state]); return [state, setStateWithCallback]; }; export default useCallbackState;