第一次看到这两个api时候我很木讷,给我感觉并没有什么本质区别,就是让原本响应式数据变得不响应,说大白话就是数据变了视图不更新提高新能,但具体区别在哪里呢?下面来通过代码实践去感受两者区别
ref/reactive数据类型的特点:每次修改都会被追踪, 都会更新UI界面, 但是这样其实是非常消耗性能。所以如果我们有一些操作不需要追踪, 不需要更新UI界面, 那么这个时候我们就可以通过toRaw方法拿到它的原始数据, 对原始数据进行修改,这样就不会被追踪,UI界面就不会跟着数据变, 性能也就提升了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <script> import {reactive, toRaw} from 'vue' export default { setup() { const obj = { name: '测试', age:10 } const state = reactive(obj) const raw = toRaw(state) console.log(obj === raw) // true } } </script> |
上述代码就证明了 toRaw 方法从 reactive 对象中获取到的是原始数据,因此我们就可以很方便的通过修改原始数据的值而不更新视图来做一
上一篇:Object.freeze(obj)冻结一个对象或者数组,使其不能发生变化
下一篇:【ES10新特性】JavaScript中数组的flatMap方法妙用
支付宝扫一扫打赏
微信扫一扫打赏
共 0 条评论关于"Vue3 中新特性—toRaw与markRaw之间区别"
最新评论