Explorar o código

avoid conversion when setting props

Evan You %!s(int64=10) %!d(string=hai) anos
pai
achega
48f328bcaf

+ 3 - 0
src/compiler/parser/index.js

@@ -235,6 +235,9 @@ function parseModifiers (name) {
 function makeAttrsMap (attrs) {
   const map = {}
   for (let i = 0, l = attrs.length; i < l; i++) {
+    if (process.env.NODE_ENV !== 'production' && map[attrs[i].name]) {
+      console.error('duplicate attribute: ' + attrs[i].name)
+    }
     map[attrs[i].name] = attrs[i].value
   }
   return map

+ 1 - 0
src/runtime/instance/render.js

@@ -99,6 +99,7 @@ export function renderMixin (Vue) {
       mergeParentData(this, data, parentData)
     }
     renderState.activeInstance = prev
+    console.log(vnode)
     return vnode
   }
 

+ 10 - 5
src/runtime/instance/state.js

@@ -1,7 +1,10 @@
 import Watcher from '../observer/watcher'
 import Dep from '../observer/dep'
-import { observe, defineReactive } from '../observer/index'
-
+import {
+  observe,
+  defineReactive,
+  withoutConversion
+} from '../observer/index'
 import {
   warn,
   hasOwn,
@@ -24,9 +27,11 @@ function initProps (vm) {
   const attrs = (data && data.attrs) || {}
   const props = vm.$options.props
   if (props) {
-    for (let key in props) {
-      defineReactive(vm, key, attrs[key])
-    }
+    withoutConversion(() => {
+      for (let key in props) {
+        defineReactive(vm, key, attrs[key])
+      }
+    })
   }
 }