import { onMounted, readonly, ref } from 'vue'; import type { ComponentInternalInstance } from 'vue'; import { getLifeCycleTarger } from '@/utils'; /** * @name useMounted * @category Lifecycle * @description Returns a ref that tracks the mounted state of the component (doesn't track the unmounted state) * * @param {ComponentInternalInstance} [instance] The component instance to track the mounted state for * @returns {Readonly>} The mounted state of the component * * @example * const isMounted = useMounted(); * * @example * const isMounted = useMounted(getCurrentInstance()); * * @since 0.0.1 */ export function useMounted(instance?: ComponentInternalInstance) { const isMounted = ref(false); const targetInstance = getLifeCycleTarger(instance); onMounted(() => { isMounted.value = true; }, targetInstance); return readonly(isMounted); }