Vue3 toRaw函数

322 阅读1分钟

在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 返回的是原对象本身