--- category: Reactivity --- # extendRef Add extra attributes to Ref. ## Usage > Please note the extra attribute will not be accessible in Vue's template. ```ts import { extendRef } from '@vueuse/core' import { shallowRef } from 'vue' const myRef = shallowRef('content') const extended = extendRef(myRef, { foo: 'extra data' }) extended.value === 'content' extended.foo === 'extra data' ``` Refs will be unwrapped and be reactive ```ts import { extendRef } from '@vueuse/core' // ---cut--- const myRef = shallowRef('content') const extraRef = shallowRef('extra') const extended = extendRef(myRef, { extra: extraRef }) extended.value === 'content' extended.extra === 'extra' extended.extra = 'new data' // will trigger update extraRef.value === 'new data' ``` ## Type Declarations ```ts export type ExtendRefReturn = Ref export interface ExtendRefOptions { /** * Is the extends properties enumerable * * @default false */ enumerable?: boolean /** * Unwrap for Ref properties * * @default true */ unwrap?: Unwrap } /** * Overload 1: Unwrap set to false */ export declare function extendRef< R extends Ref, Extend extends object, Options extends ExtendRefOptions, >(ref: R, extend: Extend, options?: Options): ShallowUnwrapRef & R /** * Overload 2: Unwrap unset or set to true */ export declare function extendRef< R extends Ref, Extend extends object, Options extends ExtendRefOptions, >(ref: R, extend: Extend, options?: Options): Extend & R ```