我给自己的分工
computed 回答「根据已有状态算出来是什么」;watch 回答「某值变了之后我要去做点什么」。前者像公式,后者像副作用。
更爱用 computed 的场景
- 列表过滤后的结果
- 按钮是否可点
- 展示用的拼接文案
const canSubmit = computed(() => {
return form.title.trim().length > 0 && !saving.value
})
才会上 watch 的场景
- 路由参数变了,重新请求
- 某个开关打开后,顺便清掉缓存
- 需要和本地存储同步
早期我喜欢啥都 watch,结果依赖一变就连环触发,调试很痛苦。现在能 computed 解决的,绝不先写 watch。
Composition API