Vue getCurrentScope 在组合式函数中有什么用途?
解释 getCurrentScope 返回当前活动作用域或 undefined 的条件,给出要求受管调用与返回手动 dispose 的两种 API 设计,并澄清检查时机和异步边界。
Vue面试题第 3 页,显示第 101–150 题,共找到 180 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
解释 getCurrentScope 返回当前活动作用域或 undefined 的条件,给出要求受管调用与返回手动 dispose 的两种 API 设计,并澄清检查时机和异步边界。
解释生命周期 API 通过当前组件实例完成登记的机制,演示普通异步回调中的迟到注册只会告警且不会执行,并准确说明 script setup 顶层 await 的编译器特例。
整理 Vue 常用组合式生命周期钩子与选项式钩子的职责对应,重点解释 beforeCreate、created 为什么没有 on 前缀版本,以及同步注册、SSR 与缓存组件边界。
给出 Vue 父子组件首次挂载时 setup、onBeforeMount 和 onMounted 的常见顺序,通过内存渲染器可验证记录解释向下创建、向上完成,并覆盖异步组件与兄弟顺序边界。
给出 Vue 修改状态后等待 nextTick 再访问节点的写法,说明它等待更新刷新而不是网络、动画和浏览器绘制,并区分一次操作与持续 post 监听。
说明 onScopeDispose 会把清理登记到当前活动作用域,在 scope.stop 或组件作用域结束时执行,演示事件订阅释放,并覆盖无活动作用域与 Vue 3.5 静默参数。
解释 onErrorCaptured 捕获后代组件错误的参数和传播链,说明返回 false 会阻止继续到更高边界与全局 errorHandler,并覆盖降级渲染再次报错、日志和生产 info。
说明父组件 onMounted 会等待同步子组件,但不包含异步组件和 Suspense 树,给出可控制异步解析顺序的示例,并讨论父子完成协议、错误与卸载。
解释模板 ref 在 setup 时尚未绑定节点、onMounted 后可访问的原因,给出可判空的组件示例,并覆盖条件渲染、卸载竞态、SSR 和后续更新边界。
说明 onServerPrefetch 返回 Promise 后服务端渲染器会等待数据就绪再生成 HTML,给出可注入加载器的组件写法,并覆盖客户端补载、错误、去重和 hydration 边界。
沿着渲染、updated、写回、再次渲染的链条解释无限循环,给出用 computed 或显式 watch 代替节点后无条件写状态的方案,并区分有界守卫与掩盖问题。
解释 onUpdated 只在所属组件因响应式变化更新自身节点树后调用,演示子组件独立状态变化不会让未更新的父组件执行钩子,并覆盖批量更新与指定变化。
解释 setup 覆盖 beforeCreate 与 created 所在初始化阶段,给出按功能组织状态、监听和清理的组件示例,并区分 DOM、注入、异步初始化和 Options this 边界。
说明普通异步回调里创建的 Vue 侦听器为何无法自动归属组件,给出同步创建、延迟启用的写法,以及必须延迟创建时需要处理的卸载竞态。
比较 Vue watch 与 watchEffect 调试选项中的 onTrack 和 onTrigger,演示记录属性读取与写入事件,并区分依赖触发、队列调度和业务回调执行。
解释 deep 对嵌套读取与变化观察的影响,补充 Vue 3.5 数字深度边界、深监听不生成旧快照,以及大表单和大型数据树如何缩小监听范围。
分开解释 getter 何时重新求值与返回值怎样比较,说明普通变量没有通知、新对象身份导致回调,以及用原始派生值或稳定数据接口缩小观察范围。
区分创建侦听器时立即执行与首次变化后执行,说明初始旧值、组件挂载、初始请求去重以及 immediate 与 once、多个来源组合时的边界。
用页码和筛选状态说明 watch 来源数组的位置对应、getter 与快照的区别,以及同步变化批量调度、对象旧值和依赖条件重置的边界。
区分响应式对象引用和修改前快照,用实际代码比较深层对象监听与原始字段 getter,说明如何获得前后值、设计快照和避免回调内才复制旧值。
说明 Vue 3.4 起 once 在首次回调运行后自动停止,验证与 immediate 的组合行为,并区分第一次回调、第一次业务条件满足和异步操作成功一次。
区分传入原始属性快照、监听当前响应式子对象和跟随 prop 整体替换,说明 getter、空值防护、深度观察、只读边界与 Vue 3.5 props 解构的编译前提。
用连续切换资源编号的例子解释 Vue watch 请求竞态,给出清理回调、有效标记与 AbortController 组合写法,并覆盖错误和 loading 被旧请求误写的情况。
对比直接对象、对象 ref 和返回对象的 getter 三种入口,说明嵌套字段变化、整体替换与 deep 选项的区别,避免把对象本身具有响应式能力等同于所有监听默认深遍历。
分析 Vue watch 回调修改自身监听源形成的反馈链,区分收敛修正和无条件递增,给出输入规范化的有界示例,并说明调度选项不能修复循环设计。
按监听源类型解释 Vue watch 的取值、依赖与深层变化规则,说明为什么原始属性值不能代替 getter,以及组件更新、watch 回调读取和数据替换的边界。
解释 Vue watch 和 watchEffect 返回的停止句柄,演示停止前后的执行记录,并区分停止侦听、清理副作用和终止异步任务,适合面试回答与组件调试。
从纯派生结果与外部副作用区分 computed 和 watch,结合价格合计、自动保存与第三方控件同步,说明冗余状态、异步竞争和可写 computed 的边界。
解释 Vue watchEffect 的同步依赖收集窗口,给出 await 前固定请求参数的写法,并区分读取最新值、使用本轮快照和请求竞态三个不同问题。
解释 watchEffect 为什么不提供 newValue 和 oldValue,给出改用多源 watch 比较状态的示例,并讨论首次执行、对象快照和批量更新遗漏中间值的边界。
说明 Vue 3.5 侦听句柄的 pause、resume 和 stop,演示暂停期间多次修改后恢复观察最新状态,并区分暂停订阅执行、资源清理与状态事务。
从副作用与派生值的职责解释 watchEffect 的首次执行和 computed 的按需计算,通过调用记录观察首次读取、缓存复用与依赖变化,并澄清 post 调度的例外。
通过资源编号与语言设置的例子比较 Vue watch 和 watchEffect,说明显式源、自动同步依赖、首次执行和旧值的区别,并给出适合业务边界的选择依据。
澄清 Vue 3.5 onWatcherCleanup 的同步注册限制,比较 watch 第三个参数和 watchEffect 第一个参数提供的 onCleanup,并说明旧接口没有被新接口取代。
围绕“Vue 3 的 reactive 数组为什么能感知 arr[0] 赋值、push 和 length 修改,而 Vue”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Proxy 对索引与 length 的统一拦截及隐式 length 依赖。
围绕“把纯静态路由表、常量字典或巨型不可变 JSON 全量 reactive 化,在 Vue 中主要浪费什么,应该怎么降级”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确多余代理与深层追踪带来内存/初始化成本,静态数据用 markRaw/shallowRef/普通常量。
围绕“在 Vue 的响应式 effect 中,await 之后再读取响应式状态为什么可能不会按直觉建立依赖”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断时要说明依赖收集只发生在 effect 同步运行窗口,异步恢复后上下文已变。
围绕“同一个 Vue effect 依赖的多个 ref 在一次同步代码块里连续修改,为什么通常只引起一次重新运行而不是每行”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 trigger 入队并由调度器去重批量执行,job 去重避免重复。
围绕“把带 #private 字段或依赖内部槽位的 class 实例放进 Vue reactive,为什么可能比放普通对象”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 Proxy 包装后私有品牌检查/内部方法 this 可能失败,建议 markRaw 或外层 ref。
围绕“在 Vue 的 computed 里直接 await 接口返回为什么常得到 Promise 或旧值,正确边界是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断时要说明 computed 同步返回值且不应承载异步副作用,异步数据应放进 ref 流程。
围绕“多个 Vue computed 串联 a→b→c 时,源 ref 变化后重算顺序为什么不能依赖“立即全部同步执行””给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确失效沿依赖传播但重算发生在读取时,调试日志顺序不等于拓扑提交。
说明 computed 依据实际读取的响应式依赖缓存结果,区分依赖变化、下一次读取、动态分支与下游更新,解释 Date.now、普通变量和原地绕过代理修改的边界。
computed 是否总比 methods 更快?用商品筛选和折扣试算说明响应式依赖缓存、重复读取、带参数计算以及非响应式时间值的边界,避免把所有函数都改成计算属性。
围绕“Vue computed/effect 在 if 分支里才读取某个响应式字段,分支切换后依赖集合会怎样变化”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确每次运行重建依赖,旧分支依赖在 cleanup 后移除以避免过期触发。
围绕“用 customRef 做带格式校验的输入状态时,track 与 trigger 应该放在 get/set 的哪一侧”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 get 返回前 track、有效写入后 trigger,拒绝非法值时不能误触发。
围绕“删除 Vue reactive 对象的键 delete state.foo 会触发哪些依赖,和把 foo 设为 un”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分 delete 影响 has/ownKeys/迭代依赖且不等同值变更。
围绕“为什么直接 const { count } = reactive({ count: 0 }) 后再改 count 不”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明解构拿到的是当前快照值而非响应式连接,修复用 toRefs/toRef 或保留 state.count。
围绕“如果手写最小 Vue 响应式,activeEffect、targetMap、dep 三个结构分别解决什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须定位当前执行者、对象到键到依赖集合的索引、依赖集合去重;不实现 scheduler、computed 或 ref。
围绕“多个 Vue 组合式函数共享同一个 effectScope 时,dispose 一次会怎样影响其中 computed”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断时要说明作用域统一回收其内 effects/computed 的依赖与缓存,适合插件/商店边界。
围绕“Vue 触发更新前如何判断值真的变了,NaN 与 +0/-0 这类边界为什么需要 hasChanged 语义”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确基于 Object.is 的变化检测避免 NaN 恒不等和零值符号误判。