feat(reactivity): add support for customRef API
This commit is contained in:
@@ -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)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user