Blog>
Snippets

Minimizing Reactive Data with unref()

Show how to use unref() to create a non-reactive copy of a ref object when reactivity is not necessary, conserving reactivity overhead.
import { ref, unref } from 'vue';

// Create a reactive reference
const myReactiveRef = ref({
  key: 'value'
});

// Normally, when you pass a `ref` around, it retains reactivity
function logReactiveRef(refValue) {
  console.log(refValue); // Reactive reference
}

// Call the function with the reactive reference
logReactiveRef(myReactiveRef);
This piece of code imports the necessary functions from Vue and defines a reactive reference object using `ref()`. The log function demonstrates passing a reactive reference as is.
// Use the `unref()` function to create a non-reactive copy
const nonReactiveCopy = unref(myReactiveRef);

// `nonReactiveCopy` is now a plain object, without reactivity overhead
function logNonReactiveCopy(value) {
  console.log(value); // Plain object, non-reactive copy
}

// Call the function with the non-reactive copy
logNonReactiveCopy(nonReactiveCopy);
This code showcases how to use `unref()` to dereference a reactive reference and make a non-reactive copy for use cases where reactivity is not necessary, thus minimizing performance overhead.