当前位置: 首页 > news >正文

特效视频素材网站查企业信息怎么查

特效视频素材网站,查企业信息怎么查,wordpress用户增加插件,做网站公司 信科网络Vue 3 中的 markRaw() 函数 markRaw() 是 Vue 3 响应式系统中的一个 API,用于标记一个对象,使其永远不会被转换为响应式代理。这在您希望确保对象保持原始状态且不触发响应式更新时非常有用。 工作中使用带的例子: chartInstance.value m…

Vue 3 中的 markRaw() 函数

markRaw() 是 Vue 3 响应式系统中的一个 API,用于标记一个对象,使其永远不会被转换为响应式代理。这在您希望确保对象保持原始状态且不触发响应式更新时非常有用。

工作中使用带的例子:

chartInstance.value = markRaw(echarts.init(chartRef.value as HTMLDivElement));

为什么需要 markRaw?
ECharts 实例本身是一个复杂的对象,如果被 Vue 的响应式系统代理,可能会导致性能下降或意外行为。

基本用法

import { markRaw, reactive } from 'vue'const original = { foo: 1 }
const reactiveObj = reactive({nested: markRaw(original)  // 标记为原始对象
})// original 不会被转为响应式
console.log(isReactive(reactiveObj.nested)) // 输出 false

使用场景

  1. 性能优化:处理不需要响应式的大型对象
  2. 第三方库对象:处理复杂的类实例或外部库的对象
  3. 不可变数据:如配置对象等不应改变的数据
  4. 避免响应式开销:当响应式转换会造成不必要开销时

重要特性

  • 被标记的对象会被 Vue 的响应式系统跳过
  • 被标记对象内部的嵌套对象也不会被转换
  • 一旦标记,该对象后续无法再转为响应式
  • reactive()ref() 的功能相反

组件中使用示例

import { markRaw } from 'vue'export default {setup() {// 标记配置对象为非响应式const staticConfig = markRaw({apiUrl: 'https://api.example.com',timeout: 5000})return { staticConfig }}
}

注意事项

  • markRaw() 标记的对象将完全脱离 Vue 的响应式系统
  • 适用于那些确实不需要响应式更新的数据
  • 误用可能导致数据变化无法被视图检测到

markRaw() 的实现原理

markRaw() 是 Vue 3 响应式系统的核心 API 之一,其实现原理主要基于以下几个关键机制:

1. 标记位机制

Vue 3 内部使用 __v_skip 标记属性来标识是否跳过响应式转换:

function markRaw(value) {// 给对象添加不可枚举的 __v_skip 属性def(value, '__v_skip', true)return value
}

其中 def 是 Vue 内部工具函数,用于定义不可枚举的属性:

function def(obj, key, value) {Object.defineProperty(obj, key, {configurable: true,enumerable: false,  // 不可枚举value})
}

2. 响应式创建时的检查

在创建响应式代理时(reactive()ref()),Vue 会先检查这个标记:

function createReactiveObject(target) {// 检查 __v_skip 标记if (target && target.__v_skip) {return target  // 直接返回原始对象}// ...否则继续创建响应式代理
}

3. 嵌套对象处理

对于嵌套对象的处理同样遵循这个规则:

function get(target, key) {// 获取值const res = Reflect.get(target, key)// 如果值是对象且没有被标记,则递归转为响应式if (isObject(res) && !res.__v_skip) {return reactive(res)}return res
}

4. 与响应式系统集成

整个机制与 Vue 的响应式系统深度集成:

  1. 响应式跟踪:被标记的对象不会被 track
  2. 触发更新:修改被标记对象不会 trigger 更新
  3. 性能优化:避免了不必要的 Proxy 创建和依赖收集

设计考量

这种实现方式具有以下优点:

  1. 轻量级:仅添加一个隐藏属性,几乎无额外开销
  2. 不可枚举:不会影响对象的正常使用和序列化
  3. 显式控制:开发者可以精确控制哪些对象不需要响应式
  4. 一致性:与 Vue 的其他响应式 API 保持一致的实现风格

实际应用示例

const obj = { a: 1 }
markRaw(obj)// 内部实际变成了:
{ a: 1,__v_skip: true  // 不可枚举属性
}
http://www.yayakq.cn/news/399540/

相关文章:

  • cpa没有网站怎么做万网个人网站建设教程
  • 建站行业前景怎么样wordpress搜索验证登录页面
  • 做网站需要的素材照片国外网站服务器地址
  • 如何做网站的主页网络营销是不是网络销售
  • 建设通网站免费注册做礼品的网站
  • 旅行社网站程序网络营销课程主要讲什么内容
  • 秦皇岛网站备案产品开发流程6个步骤
  • 谷哥做网站 是如何推广的中国软装网
  • 做移动类网站的书推荐免费推广引流平台推荐
  • 那个视频网站最好最全网址昆明app开发公司
  • 高安做网站重庆市建设项目环境申报表网站
  • 怎么利用花生壳做自己的网站自己做网站 需要哪些
  • 北京平台网站建设方案网站营销网
  • 网站建设需要哪些工作西安做百度网站的
  • c 与oracle做网站个人如何开发小程序
  • 网站源代码分列怎么做做教育类的网站名
  • 网站开发甲方需求文档深圳龙华好还是龙岗好
  • 网站在线咨询代码免费微信小程序制作平台?
  • 文明网站的建设与管理几点思考王烨个人简历
  • 婚庆网站模板北京网站建设seo公司哪家好
  • 深圳乐创网站建设企业营业执照查询网上查询
  • 优化网站搭建上海网站建设公司价格
  • 珠海网站搭建ui设计说明万能模板
  • 简述网站的建设方案银行网站建设中
  • 网站建设与开发试题与答案wordpress秀主题
  • 国网北京电力建设研究院网站华强北
  • 网站建设优化兼职站长网站的优势
  • 深圳做网站的网络公司老酒街wordpress
  • 河南建设部网站官网重庆工程造价信息2021
  • 衡水企业网站制作公司wordpress 手机商城