useEffect.ts 503 字节
Newer Older
V
vben 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
import { WatchOptions } from 'vue';
import { watch } from 'vue';
import { isFunction } from '/@/utils/is';

export const useEffect = (effectHandler: Fn, dependencies: any[]) => {
  return watch(
    dependencies,
    (changedDependencies, prevDependencies, onCleanUp) => {
      const effectCleaner = effectHandler(changedDependencies, prevDependencies);
      if (isFunction(effectCleaner)) {
        onCleanUp(effectCleaner);
      }
    },
    { immediate: true, deep: true } as WatchOptions
  );
};