26 lines
739 B
JavaScript
Raw Normal View History

2024-01-29 09:26:07 +08:00
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;