Skip to content

Commit 72a878d

Browse files
authored
fix(setup): should not trigger getter w/ object computed nested (#799)
Co-authored-by: webfansplz <>
1 parent 8beffc3 commit 72a878d

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed

src/mixin.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ export function mixin(Vue: VueConstructor) {
190190
return true
191191
}
192192

193-
if (!isPlainObject(target) || isRaw(target)) {
193+
if (!isPlainObject(target) || isRaw(target) || isRef(target)) {
194194
return false
195195
}
196196
return Object.keys(target).some((x) =>

test/setup.spec.js

+23
Original file line numberDiff line numberDiff line change
@@ -1219,4 +1219,27 @@ describe('setup', () => {
12191219
},
12201220
}).$mount()
12211221
})
1222+
1223+
// #794
1224+
it('should not trigger getter w/ object computed nested', () => {
1225+
const spy = jest.fn()
1226+
new Vue({
1227+
setup() {
1228+
new Vue({
1229+
setup() {
1230+
const person = {
1231+
name: computed(() => {
1232+
spy()
1233+
return 1
1234+
}),
1235+
}
1236+
return {
1237+
person,
1238+
}
1239+
},
1240+
})
1241+
},
1242+
})
1243+
expect(spy).toHaveBeenCalledTimes(0)
1244+
})
12221245
})

test/setupContext.spec.ts

+23
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
defineComponent,
44
createApp,
55
ref,
6+
computed,
67
nextTick,
78
SetupContext,
89
getCurrentInstance,
@@ -225,4 +226,26 @@ describe('setupContext', () => {
225226
`"RangeError: Maximum call stack size exceeded"`
226227
).not.toHaveBeenWarned()
227228
})
229+
230+
// #794
231+
it('should not trigger getter w/ object computed nested', async () => {
232+
const spy = jest.fn()
233+
createApp(
234+
defineComponent({
235+
template: `<div/>`,
236+
setup() {
237+
const person = {
238+
name: computed<number>(() => {
239+
spy()
240+
return 1
241+
}),
242+
}
243+
return {
244+
person,
245+
}
246+
},
247+
})
248+
).mount()
249+
expect(spy).toHaveBeenCalledTimes(0)
250+
})
228251
})

0 commit comments

Comments
 (0)