参考文档:
代码示例:
<input v-model="value" /><!-- 等同于 --><input v-bind:value="value" v-on:input="value=$event.target.value" /><!-- 或 --><input :value="value" @input="value=$event.target.value" />
在自定义组件中,v-model
默认利用名为 value
的 props
和名为 input
的事件。
本质是一个父子组件通信的语法糖,通过 props
和 $.emit
实现。因此父组件 v-model
语法糖本质上可以修改为:
<child :value="value" @input="function(e){value=e}"></child>
<ChildComponent v-model="title" /><!-- 相当于 --><ChildComponent:modelValue="title"@update:modelValue="title = $event">
若需要更改 model
的名称,现在可为 v-model
传递一个参数,以作为组件 model
选项的替代:
<ChildComponent v-model:title="title" /><!-- 相当于 --><ChildComponent :title="title" @update:title="title = $event" />
其他新特性:
v-model
应用场景:代码复用和抽象的主要形式是组件,但是在某些情况下,仍然需要对普通 DOM 元素进行底层操作,这时候就会用到自定义指令。
使用场景:
钩子函数 | 说明 | 原钩子函数 |
---|---|---|
created | 在元素的 attribute 或事件监听器被应用之前调用 | 新增 |
beforeMount | 当指令第一次绑定到元素并且在挂载父组件之前调用。在这里你可以做一次性的初始化设置 | bind |
mounted | 在挂载绑定元素的父组件时调用 | inserted |
beforeUpdate | 在更新包含组件的 VNode 之前调用 | 新增 |
updated | 在包含组件的 VNode 及其子组件的 VNode 更新后调用 | componentUpdated |
beforeUnmount | 在卸载绑定元素的父组件之前调用 | 新增 |
unmounted | 当指令与元素解除绑定且父组件已卸载时,只调用一次 | unbind |
🗑 原
update
钩子函数已移除!
传递参数:
el
:指令绑定到的元素binding
:包含以下 property 的对象instance
:指令的组件实例value
:传递给指令的值oldValu
:先前的值(仅在 beforeUpdate
和 updated
中可用)arg
:参数传递给指令modifiers
:包含修饰符(如果有)的对象dir
:一个对象,在注册指令时作为参数传递使用方式在官方文档中已经说明得非常清晰了: