Skip to content

Commit

Permalink
fix(reactive-vue): fix vue3 render dependency collection broken (#2904)
Browse files Browse the repository at this point in the history
  • Loading branch information
ethesky-rcplatformhk authored Mar 5, 2022
1 parent 8d20177 commit b226760
Showing 1 changed file with 22 additions and 13 deletions.
35 changes: 22 additions & 13 deletions packages/reactive-vue/src/hooks/useObserver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,34 @@ export const useObserver = (options?: IObserverOptions) => {

onBeforeUnmount(disposeTracker)

Object.defineProperty(vm, 'update', {
Object.defineProperty(vm, 'effect', {
get() {
// https://github.com/alibaba/formily/issues/2655
return vm['_updateEffect'] || {}
},
set(newValue) {
disposeTracker()
vm['_updateEffectRun'] = newValue.run
const newTracker = () => {
disposeTracker()
tracker = new Tracker(() => {
if (options?.scheduler && typeof options.scheduler === 'function') {
options.scheduler(update)
} else {
update()
}
})
}
const update = function () {
newTracker()
let refn: any = null
tracker?.track(() => {
refn = vm['_updateEffectRun'].call(newValue)
})
return refn
}

const update = () => tracker?.track(newValue)

tracker = new Tracker(() => {
if (options?.scheduler && typeof options.scheduler === 'function') {
options.scheduler(update)
} else {
update()
}
})

vm['_updateEffect'] = update
newValue.run = update
vm['_updateEffect'] = newValue
},
})
}
Expand Down

0 comments on commit b226760

Please sign in to comment.