import { useLayoutEffect, useState } from 'react'; import { shallowEqual } from 'react-redux'; /** * 对输入对象增加一层浅比较, 如果对象浅比较结果一致则返回原对象(防止更新) */ export function useShallowObject(object: T): T { const [state, setState] = useState(object); useLayoutEffect(() => { if (!shallowEqual(state, object)) { setState(object); } }, [object]); return state; }