本文已参与「新人创作礼」活动,一起开启掘金创作之路。
-
ref
- 定义基本类型的响应式数据,原理通过
Object.defineProperty()的get与set完成的。(对象类型不要用它,要用reactive函数)
- 定义基本类型的响应式数据,原理通过
-
reactive
- 定义一个对象类型的响应式数据(基本类型不要用它,要用
ref函数)
- 定义一个对象类型的响应式数据(基本类型不要用它,要用
-
shallowReactive
- 只处理对象最外层属性的响应式(浅响应式)
-
shallowRef
- 只处理基本数据类型的响应式, 不进行对象的响应式处理
-
readonly
- 让一个响应式数据变为只读的(深只读)
应用场景: 不希望数据被修改时
-
shallowReadonly
- 让一个响应式数据变为只读的(浅只读)
应用场景: 不希望数据被修改时
-
toRaw
- 作用:将一个由
reactive生成的响应式对象转为普通对象。 应用场景:用于读取响应式对象对应的普通对象,对这个普通对象的所有操作,不会引起页面更新。
- 作用:将一个由
-
markRaw
- 作用:标记一个对象,使其永远不会再成为响应式对象。
应用场景:- 有些值不应被设置为响应式的,例如复杂的第三方类库等。
- 当渲染具有不可变数据源的大列表时,跳过响应式转换可以提高性能。 v-model 数据的双向绑定 在原生表中(最简单的实现方法)
<input type="text" v-model="name">
原理 先给input绑定value属性值为数据name 给input绑定input事件将其input的value值赋给数据name 第一种写法:
<input type="text" :value="name" @input="name=$event.target.value">
第二种写法:
<input type="text" :value="name" @input="change">
<script>
let app = new Vue({
el: '#app',
data: {
message: 'Hello'
},
methods: {
change(event) {
this.message = event.target.value;
}
}
})
</script
v-model底层原理实际上是分别利用了v-bind用来绑定value的值,用v-on去绑定input标准事件,这是事件用来监听当输入域内容发生变化的时候来执行一些事情。具体做的事情就是通过$event这个事件对象获取到最新的输入域的值,然后把最新的值赋值给旧的值,从而进行数据的更新。这样的话就完成了双向数据绑定。