expect(fn).toHaveBeenCalledTimes(1)
})
+ test("should reactive when mutate array's index", () => {
+ const original = [1, 2, 3]
+ const observed = reactive(original)
+
+ let dummy
+ effect(() => {
+ dummy = observed.hasOwnProperty(0)
+ })
+
+ expect(dummy).toBe(true)
+
+ delete observed[0]
+ expect(dummy).toBe(false)
+ })
+
test('shift on Array should trigger dependency once', () => {
const arr = reactive([1, 2, 3])
const fn = vi.fn()
return instrumentations
}
-function hasOwnProperty(this: object, key: string) {
+function hasOwnProperty(this: object, key: unknown) {
+ // #10455 hasOwnProperty may be called with non-string values
+ key = '' + key
const obj = toRaw(this)
track(obj, TrackOpTypes.HAS, key)
- return obj.hasOwnProperty(key)
+ return obj.hasOwnProperty(key as string)
}
class BaseReactiveHandler implements ProxyHandler<Target> {