Vue 3中的shallowReactive - 浅层响应式

本文将为您详细介绍 Vue 3 中的浅层响应式——shallowReactive 的定义、使用方法以及常见问题的解决方案。通过学习本文,您将能够更好地掌握 Vue 3 中的响应式原理,提高 Vue 开发的效率。 shallowReactive 是什么 在 Vue 3 中,我们可以使用 shallowReactive 来创建一个响应式对象,与 reactive 不同, shallowReactive 会忽略对象中的嵌套属性的响应式更新,只有对象的直接属性发生变化时才会触发更新。 shallowReactive 的使用场景通常是,当我们需要创建一个响应式对象,但是不希望其嵌套属性也响应式更新时,可以使用该 API。 shallowReactive 用法例子 让我们来看一个简单的使用 shallowReactive 的例子: import { shallowReactive } from "vue"; const state = shallowReactive({ name: "小明", address: { city: "上海", state: "上海", }, }); // 修改state对象的直接属性 state.name = "小红"; // 触发响应式更新 // 修改state对象的嵌套属性 state.address.city = "北京"; // 不会触发响应式更新 在上面的代码中,我们使用 shallowReactive 创建了一个响应式对象 state,其中包含一个直接属性 name 和一个嵌套属性 address。当我们修改 state.name 属性时,由于该属性是直接属性,所以会触发响应式更新;当我们修改 state.address.city 属性时,由于该属性是嵌套属性,所以不会触发响应式更新。 除了上述例子中的直接属性和嵌套属性的修改外,我们还可以使用 Vue.set 方法来给对象添加新属性。当我们使用 Vue.set 方法添加新属性时,该属性会被视为直接属性,因此会触发响应式更新。让我们来看一个示例: import { shallowReactive } from "vue"; const state = shallowReactive({ name: "小明", address: { city: "上海", state: "上海", }, }); // 添加新属性 Vue.set(state, "age", 18); // 触发响应式更新 在上面的代码中,我们使用 Vue.set 方法向 state 对象添加了一个新属性 age,由于该属性是直接属性,所以会触发响应式更新。 ...

2023年3月15日 · 1 分钟 · 诚哥博客