在Vue3中,toRaw方法用于获取一个ref对象或reactive对象的原始非响应式版本,然后对原始数据进行修改即能够修改被proxy包裹的原始数据
假设一个响应式对象或数组:
import { reactive } from 'vue';
const reactiveData = reactive({
name: 'John',
age: 30,
hobbies: ['reading', 'coding', 'cooking']
});
- 导入
toRaw函数
import { toRaw } from 'vue';
- 使用
toRaw方法获取非响应式版本
const rawData = toRaw(reactiveData);
- 即可在
rawData上执行操作,且不会触发响应式更新
rawData.name = 'Alice';
rawData.age = 25;
rawData.hobbies.push('painting');
这些修改不会触发视图更新,因为rawData是原始数据,不会与Vue的响应式系统关联
注意:toRaw方法只能用于获取响应式对象的原始版本。如果你尝试在非响应式对象上使用toRaw,它将返回原对象本身
const nonReactiveData = {
message: 'Hello, world!'
};
const rawNonReactiveData = toRaw(nonReactiveData);
console.log(rawNonReactiveData === nonReactiveData); // 输出为 true,因为 toRaw 返回的是原对象本身