useMutationObserver
A composable for detecting DOM changes using the Mutation Observer API with automatic cleanup.
Usage
The useMutationObserver composable wraps the Mutation Observer API to detect changes to the DOM tree. It’s useful for monitoring attribute changes, child element modifications, and character data updates.
vue
<script setup lang="ts">
import { useMutationObserver } from '@vuetify/v0'
import { ref, useTemplateRef } from 'vue'
const target = useTemplateRef('target')
const mutationCount = ref(0)
useMutationObserver(target, (mutations) => {
mutationCount.value += mutations.length
mutations.forEach(mutation => {
console.log('Type:', mutation.type)
console.log('Added nodes:', mutation.addedNodes)
console.log('Removed nodes:', mutation.removedNodes)
})
}, {
childList: true,
attributes: true,
attributeOldValue: true
})
</script>
<template>
<div>
<div ref="target">
<p>Mutations detected: {{ mutationCount }}</p>
</div>
</div>
</template>Architecture
useMutationObserver wraps the native MutationObserver API with Vue reactivity:
Reactivity
| Property/Method | Reactive | Notes |
|---|---|---|
isActive | Computed from observer ref | |
isPaused | ShallowRef, readonly | |
target | Accepts MaybeRef, watched for changes |
The following API details are for the useMutationObserver composable.
Functions
useMutationObserver
(target: MaybeElementRef, callback: (entries: MutationObserverRecord[]) => void, options?: UseMutationObserverOptions) => UseMutationObserverReturnA composable that uses the Mutation Observer API to detect changes in the DOM.
Options
immediate
boolean | undefinedonce
boolean | undefinedchildList
boolean | undefinedattributes
boolean | undefinedcharacterData
boolean | undefinedsubtree
boolean | undefinedattributeOldValue
boolean | undefinedcharacterDataOldValue
boolean | undefinedattributeFilter
string[] | undefinedProperties
isActive
Readonly<Ref<boolean, boolean>>Whether the observer is currently active (created and observing)
Methods
Was this page helpful?