标准答案
- 组件树可以查看组件层级、props、attrs、slots 和 emits,适合定位数据有没有传到目标组件。
- 响应式状态面板能观察 ref、reactive、computed 的当前值,帮助判断是状态没变,还是视图没更新。
- Pinia 面板可以查看 store state、getters、actions 调用和状态变化,适合调试跨组件共享状态。
- 性能和时间线能力可以辅助观察组件更新频率、事件触发顺序和部分渲染开销。
- 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 里的状态修改当成真实业务流程,忽略页面刷新、接口返回和初始化时序。