feat(reactivity): add support for customRef API

This commit is contained in:
Evan You
2020-04-14 20:45:41 -04:00
parent 4046f0bc03
commit b83c580131
4 changed files with 68 additions and 4 deletions

View File

@@ -8,7 +8,7 @@ import {
isReactive
} from '../src/index'
import { computed } from '@vue/runtime-dom'
import { shallowRef, unref } from '../src/ref'
import { shallowRef, unref, customRef } from '../src/ref'
describe('reactivity/ref', () => {
it('should hold a value', () => {
@@ -208,4 +208,33 @@ describe('reactivity/ref', () => {
expect(dummyX).toBe(4)
expect(dummyY).toBe(5)
})
test('customRef', () => {
let value = 1
let _trigger: () => void
const custom = customRef((track, trigger) => ({
get() {
track()
return value
},
set(newValue: number) {
value = newValue
_trigger = trigger
}
}))
let dummy
effect(() => {
dummy = custom.value
})
expect(dummy).toBe(1)
custom.value = 2
// should not trigger yet
expect(dummy).toBe(1)
_trigger!()
expect(dummy).toBe(2)
})
})