Просмотр исходного кода

fix(compiler-core): should not hoist element with cached + merged event handlers

Evan You 6 лет назад
Родитель
Сommit
5455e8e69a
1 измененных файлов с 11 добавлено и 1 удалено
  1. 11 1
      packages/compiler-core/src/transforms/hoistStatic.ts

+ 11 - 1
packages/compiler-core/src/transforms/hoistStatic.ts

@@ -176,7 +176,17 @@ function hasCachedProps(node: PlainElementNode): boolean {
   if (props && props.type === NodeTypes.JS_OBJECT_EXPRESSION) {
     const { properties } = props
     for (let i = 0; i < properties.length; i++) {
-      if (properties[i].value.type === NodeTypes.JS_CACHE_EXPRESSION) {
+      const val = properties[i].value
+      if (val.type === NodeTypes.JS_CACHE_EXPRESSION) {
+        return true
+      }
+      // merged event handlers
+      if (
+        val.type === NodeTypes.JS_ARRAY_EXPRESSION &&
+        val.elements.some(
+          e => !isString(e) && e.type === NodeTypes.JS_CACHE_EXPRESSION
+        )
+      ) {
         return true
       }
     }