Files
dax-pay-ui/src/hooks/core/useEffect.ts
2020-12-24 22:58:26 +08:00

19 lines
511 B
TypeScript

import { watch } from 'vue';
import { isFunction } from '/@/utils/is';
export function useEffect<T extends any = any>(
effectHandler: (deps: T[], prevDeps?: T[]) => () => void,
dependencies: T[]
) {
return watch(
dependencies,
(changedDependencies, prevDependencies, onCleanUp) => {
const effectCleaner = effectHandler(changedDependencies, prevDependencies);
if (isFunction(effectCleaner)) {
onCleanUp(effectCleaner);
}
},
{ immediate: true, deep: true }
);
}