首页前端开发HTMLVue3.0API介绍中 markRaw 使用示例

Vue3.0API介绍中 markRaw 使用示例

时间2024-05-08 20:06:03发布访客分类HTML浏览90
导读:Vue3.0API介绍中 markRaw 使用示例 markRaw 标记一个对象,使其永远不会转换为 proxy。返回对象本身。 import { markRaw, reactive, isReactive } from "vue...
Vue3.0API介绍中 markRaw 使用示例 markRaw 标记一个对象,使其永远不会转换为 proxy。返回对象本身。 import { markRaw, reactive, isReactive } from "vue"; const foo = markRaw({ } ) console.log(isReactive(reactive(foo))) // false // 嵌套在其他响应式对象中时也可以使用 const bar = reactive({ foo } ) console.log(isReactive(bar.foo)) // false 重要 markRaw 和下方的 shallowXXX API 使你可以有选择地退出默认的深度响应式/只读转换模式,并将原始的,未被代理的对象嵌入状态图中。它们可以根据情况灵活运用: 有些值不应该是响应式的,例如复杂的第三方类实例或 Vue 组件对象。 当渲染具有不可变数据源的大列表时,跳过 proxy 转换可以提高性能。 这些例子是进阶的运用,因为原始选择退出仅在根级别,因此,如果将嵌套在内的、未标记的原始对象添加进响应式对象,然后再次访问该响应式对象,就会得到原始对象被代理后的版本。这可能会导致同一性风险——即执行一个依赖于对象本身的操作,但同时使用同一对象的原始版本和被代理后的版本: import { markRaw, reactive, isReactive } from "vue"; const foo = markRaw({ nested: { } } ) const bar = reactive({ // 虽然 `foo` 被标记为原始,但 foo.nested 不是。 nested: foo.nested } ) console.log(foo.nested === bar.nested) // false 同一性风险通常很少见。然而,为了正确地使用这些 API,同时安全地避免同一性风险,就需要对响应性系统的工作原理有一个充分的理解。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Vue3.0API介绍中 markRaw 使用示例
本文地址: https://pptw.com/jishu/655736.html
追溯JavaScript发展史 Vue3.0API介绍中 shallowReactive 使用示例

游客 回复需填写必要信息