Преглед изворни кода

fix: guard against non-object provide value

Evan You пре 3 година
родитељ
комит
c319cc7a74
1 измењених фајлова са 4 додато и 1 уклоњено
  1. 4 1
      src/core/instance/inject.ts

+ 4 - 1
src/core/instance/inject.ts

@@ -1,4 +1,4 @@
-import { warn, hasSymbol, isFunction } from '../util/index'
+import { warn, hasSymbol, isFunction, isObject } from '../util/index'
 import { defineReactive, toggleObserving } from '../observer/index'
 import { defineReactive, toggleObserving } from '../observer/index'
 import type { Component } from 'types/component'
 import type { Component } from 'types/component'
 import { provide } from 'v3/apiInject'
 import { provide } from 'v3/apiInject'
@@ -10,6 +10,9 @@ export function initProvide(vm: Component) {
     const provided = isFunction(provideOption)
     const provided = isFunction(provideOption)
       ? provideOption.call(vm)
       ? provideOption.call(vm)
       : provideOption
       : provideOption
+    if (!isObject(provided)) {
+      return
+    }
     const keys = hasSymbol ? Reflect.ownKeys(provided) : Object.keys(provided)
     const keys = hasSymbol ? Reflect.ownKeys(provided) : Object.keys(provided)
     setCurrentInstance(vm)
     setCurrentInstance(vm)
     for (let i = 0; i < keys.length; i++) {
     for (let i = 0; i < keys.length; i++) {