Przeglądaj źródła

feat(warn): warn computed conflict with methods (#10119)

Co-authored-by: wangzongxu <wangzongxu@vipkid.com.cn>
wangzongxu 5 lat temu
rodzic
commit
3ad60fea73

+ 2 - 0
src/core/instance/state.js

@@ -202,6 +202,8 @@ function initComputed (vm: Component, computed: Object) {
         warn(`The computed property "${key}" is already defined in data.`, vm)
       } else if (vm.$options.props && key in vm.$options.props) {
         warn(`The computed property "${key}" is already defined as a prop.`, vm)
+      } else if (vm.$options.methods && key in vm.$options.methods) {
+        warn(`The computed property "${key}" is already defined as a method.`, vm)
       }
     }
   }

+ 12 - 0
test/unit/features/options/computed.spec.js

@@ -206,6 +206,18 @@ describe('Options computed', () => {
     expect(`computed property "a" is already defined as a prop`).toHaveBeenWarned()
   })
 
+  it('warn conflict with methods', () => {
+    new Vue({
+      computed: {
+        a: () => 2
+      },
+      methods: {
+        a: () => {}
+      }
+    })
+    expect(`computed property "a" is already defined as a method`).toHaveBeenWarned()
+  })
+
   it('rethrow computed error', () => {
     const vm = new Vue({
       computed: {