标准答案

  1. 组件树可以查看组件层级、props、attrs、slots 和 emits,适合定位数据有没有传到目标组件。
  2. 响应式状态面板能观察 ref、reactive、computed 的当前值,帮助判断是状态没变,还是视图没更新。
  3. Pinia 面板可以查看 store state、getters、actions 调用和状态变化,适合调试跨组件共享状态。
  4. 性能和时间线能力可以辅助观察组件更新频率、事件触发顺序和部分渲染开销。
  5. Devtools 是定位工具,不是架构替代品。发现状态混乱后,仍然要回到数据所有权、组件拆分和副作用清理上处理。

题目解析

这道题可以按“组件树、响应式状态、全局 store、性能时间线”四类能力回答。

如果 props 在父组件已变化但子组件没变化,要检查传参、key、条件渲染和解构丢响应式。

如果 Pinia 状态变化频繁或来源不清晰,要检查 action 边界和是否在多个组件里直接修改同一份状态。

代码示例

Pinia 中把状态修改收敛到 action,更容易在 Devtools 中追踪变化来源。

TypeScript
export const useCartStore = defineStore('cart', {
  state: () => ({
    items: [] as CartItem[]
  }),
  actions: {
    addItem(item: CartItem) {
      this.items.push(item)
    }
  }
})

常见误区

  • 只会打开组件树看值,不会结合事件、store action 和组件更新顺序排查。
  • 看到组件重复更新就直接加缓存,没有先确认依赖是否设计过宽。
  • 把 Devtools 里的状态修改当成真实业务流程,忽略页面刷新、接口返回和初始化时序。

作者信息