import { computed, ref, watch } from 'vue'; function useMemo(getterOrOptions) { const computedValueRef = computed(getterOrOptions); // Maybe it's not possible to lazy evaluate the value, since we can't make // render phase capture the deps behind useMemo const valueRef = ref(computedValueRef.value); watch(computedValueRef, (value) => { valueRef.value = value; }); if (typeof getterOrOptions === 'function') { return valueRef; } else { return { __v_isRef: true, get value() { return valueRef.value; }, set value(v) { getterOrOptions.set(v); } }; } } export default useMemo;