vue toRaw作用
时间: 2024-09-18 10:11:40 浏览: 66
Vue 3中的`toRaw()`和`markRaw()`这两个功能主要用于管理和转换数据的响应性。
1. `toRaw()`的作用[^1]:
`toRaw()`函数用于将响应式数据(比如通过`reactive()`创建的对象)转换成一个非响应式对象。这个操作类似于深拷贝,但只针对响应式部分。当你想要保存一份原始数据的副本,而不想让它受Vue实例状态变化影响时,可以使用它。例如:
```javascript
const originalData = { a: { b: 'value' } };
const nonReactiveCopy = toRaw(originalData);
// 修改原data的a.b不会影响nonReactiveCopy
originalData.a.b = 'new value';
console.log(nonReactiveCopy); // 输出:{ a: { b: 'value' } }
```
2. `markRaw()`的作用:
`markRaw()`则相反,它用于标记一个对象为原始对象,即使它是从响应式数据派生出来的。这意味着这个对象将不再是响应式的,不会自动跟踪其依赖并更新视图。举个例子:
```javascript
const person = reactive({ name: 'zhangsan', id: '1' });
const rawPerson = markRaw(person);
// 修改rawPerson.name不会触发视图更新
rawPerson.name = 'lisi';
console.log(person); // 输出:{ name: 'zhangsan', id: '1' }
```
注意,原始对象的修改不会影响到响应式的数据。
阅读全文