JavaScript项目实战经验分享:从内存泄漏到精准内存管理
2026/10/12 18:50:57
当你在控制台看到:
Invalid transition name: xxxVue 在告诉你:
「你在<transition name="xxx">或v-enter/leave类名里用了非法字符或空名字,过渡无法识别。」
本质:过渡名字非法、空、重复或类名不匹配。
<!-- ❌ 名字空 --> <transition name=""> <div v-if="show">内容</div> </transition> <!-- ❌ 名字空格 --> <transition name=" "> <div v-if="show">内容</div> </transition>修复:给合法名字
<!-- ✅ 合法名字 --> <transition name="fade"> <div v-if="show">内容</div> </transition><!-- ❌ 名字非法字符 --> <transition name="fade@"> <div v-if="show">内容</div> </transition>修复:合法字符(字母、数字、下划线、连字符)
<!-- ✅ 合法字符 --> <transition name="fade-in"> <div v-if="show">内容</div> </transition><!-- ❌ 类名不匹配 --> <transition name="fade"> <div v-if="show" class="my-fade-enter">内容</div> </transition> <style> .my-fade-enter { opacity: 0; } /* ❌ 类名不匹配 */ </style>修复:类名匹配过渡名字
<!-- ✅ 类名匹配 --> <transition name="fade"> <div v-if="show">内容</div> </transition> <style> .fade-enter-active, .fade-leave-active { transition: opacity 0.5s; } .fade-enter, .fade-leave-to { opacity: 0; } </style><!-- ❌ 动态名字非法字符 --> <transition :name="transitionName"> <div v-if="show">内容</div> </template> <script setup> const transitionName = ref('fade@'); // ❌ 非法字符 </script>修复:合法字符
consttransitionName=ref('fade-in');// ✅ 合法字符// ❌ 库提供非法名字import{Transition}from'third-party';<Transition name="fade@">...</Transition>修复:封装或映射合法名字
constlegalName='fade-in';// ✅ 映射合法名字<Transition name={legalName}>...</Transition>| 场景 | 规则 | 示例 |
|---|---|---|
| 合法字符 | 字母、数字、下划线、连字符 | fade-in |
| 空名字 | 避免空字符串 | fade |
| 动态名字 | 变量值为合法字符 | ref('fade-in') |
| 类名匹配 | 匹配过渡名字 | .fade-enter-active |
.fade-enter-active)「Invalid transition name」= 名字非法、空、类名不匹配。」
用「合法字符 + 类名匹配 + 空字符串避免」三件套,让过渡名字永远合法,动画立刻生效!
最后问候亲爱的朋友们,并邀请你们阅读我的全新著作
📚 《Vue.js 3企业级项目开发实战(微课视频版》