Vue3 移除的 API
按键修饰符
- 不再支持 keycode 作为 v-on 的修饰符
- 不再支持 config.keyCode
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
<input v-on:keyup.13="submit" />
<input v-on:keyup.enter="submit" />
<script> Vue.config.keyCodes = { f1: 112, }; </script> <input v-on:keyup.112="showHelpText" /> <input v-on:keyup.f1="showHelpText" />
<input v-on:keyup.delete="confirmDelete" />
|
$on,$off 和 $once 实例方法被移除
在 vue2.x 中,可以通过指令方式添加处理函数($on, $once, $off), 这可以创建 event hub,用来创建在整个应用程序中可用的全局事件监听器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
const eventHub = new Vue()
export default eventHub
import eventHub from './eventHub'
export default { mounted() { eventHub.$on('custom-event', () => { console.log('Custom event triggered!') }) }, beforeDestory() { eventHub.$off('custom-event') } }
import eventHub from './eventHub'
export default { methods: { callGlobalCustomEvent() { eventHub.$emit('custom-event') } } }
|
在 Vue3 中,从实例中完全移除了 $on、$off 和 $once 方法。$emit 仍然包含于现有的 API 中,因为它用于触发由父组件声明式添加的事件处理函数
删除过滤器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <template> <h1>Bank Account Balance</h1> <p>{{ accountBalance | currencyUSD }}</p> </template> <script> export default { props: { accountBalance: { type: Number, required: true, }, }, filter: { currentUSD(value) { return "$" + value; }, }, }; </script>
|
在 3.x 中,过滤器已删除,不再支持。可以使用计算属性或调用方法替换他们
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <template> <h1>Bank Account Balance</h1> <p>{{ accountInUSD }}</p> </template> <script> export default { props: { accountBalance: { type: Number, required: true, }, }, computed: { accountInUSD() { return "$" + this.accountBalance; }, }, }; </script>
|
内联模板 Attribute
移除内联特性
1 2 3 4 5 6 7 8
|
<my-component inline-template> <div> <p>它们被编译为组件自己的模板</p> <p>不是父级所包含的内容。</p> </div> </my-component>
|
vue3 中已移除,不再支持
$children 已移除
$children 实例 property 已从 Vue 3.0 中移除,不再支持。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <template> <div> <img alt="Vue logo" src="./assets/logo.png" /> <my-button>Change logo</my-button> </div> </template>
<script> import MyButton from "./MyButton"; export default { components: { MyButton, }, mounted() { console.log(this.$children); }, }; </script>
|
在 vue3 中,如果要访问子组件实例,建议使用$refs
$destory 实例方法已删除
用户不应再手动管理单个 Vue 组件的生命周期。