onMountedOrActivated.ts 480 B

12345678910111213141516171819202122232425
  1. import { type AnyFunction } from '@vben/types';
  2. import { nextTick, onActivated, onMounted } from 'vue';
  3. /**
  4. * 在 OnMounted 或者 OnActivated 时触发
  5. * @param hook 任何函数(包括异步函数)
  6. */
  7. function onMountedOrActivated(hook: AnyFunction) {
  8. let mounted: boolean;
  9. onMounted(() => {
  10. hook();
  11. nextTick(() => {
  12. mounted = true;
  13. });
  14. });
  15. onActivated(() => {
  16. if (mounted) {
  17. hook();
  18. }
  19. });
  20. }
  21. export { onMountedOrActivated };