Răsfoiți Sursa

improve transition default value handling

Evan You 10 ani în urmă
părinte
comite
050395408a

+ 1 - 1
src/compiler/codegen/index.js

@@ -92,7 +92,7 @@ function genData (el) {
     data += `style:${el.styleBinding},`
     data += `style:${el.styleBinding},`
   }
   }
   // transition
   // transition
-  if (el.transition != null) {
+  if (el.transition) {
     data += `transition:__resolveTransition__(${el.transition}),`
     data += `transition:__resolveTransition__(${el.transition}),`
   }
   }
   // v-show, used to avoid transition being applied
   // v-show, used to avoid transition being applied

+ 2 - 1
src/compiler/parser/index.js

@@ -287,7 +287,8 @@ function processStyleBinding (el) {
 }
 }
 
 
 function processTransition (el) {
 function processTransition (el) {
-  el.transition = getBindingAttr(el, 'transition')
+  const transition = getBindingAttr(el, 'transition')
+  el.transition = transition === '""' ? true : transition
 }
 }
 
 
 function processAttrs (el) {
 function processAttrs (el) {

+ 3 - 3
src/runtime/vdom-web/modules/transition.js

@@ -37,7 +37,7 @@ export function beforeEnter (_, vnode) {
     el._leaveCb()
     el._leaveCb()
   }
   }
   const data = vnode.data.transition
   const data = vnode.data.transition
-  if (data == null) {
+  if (!data) {
     return
     return
   }
   }
 
 
@@ -92,7 +92,7 @@ export function onLeave (vnode, rm) {
     el._enterCb()
     el._enterCb()
   }
   }
   const data = vnode.data.transition
   const data = vnode.data.transition
-  if (data == null) {
+  if (!data) {
     return rm()
     return rm()
   }
   }
 
 
@@ -141,13 +141,13 @@ export function onLeave (vnode, rm) {
 }
 }
 
 
 function detectAuto (data) {
 function detectAuto (data) {
+  if (data === true) data = 'v'
   return typeof data === 'string'
   return typeof data === 'string'
     ? autoCssTransition(data)
     ? autoCssTransition(data)
     : data
     : data
 }
 }
 
 
 const autoCssTransition = cached(name => {
 const autoCssTransition = cached(name => {
-  name = name || 'v'
   return {
   return {
     enterClass: `${name}-enter`,
     enterClass: `${name}-enter`,
     leaveClass: `${name}-leave`,
     leaveClass: `${name}-leave`,