同学你好
恭喜你找到了一个 vue 的内部的 bug~
假如将vue 的版本回退到 3.2.31 就会发现一切正常。
npm install vue@3.2.31
你的版本是 38,我看了代码,怀疑是两次连续的 commit,会让一次不起作用
// 原因在这里
store.commit('setError', { status: true, message: error })
store.commit('setLoading', false)
// 不清楚机制,有可能是 error 那里的 watch 阻断了更新,虽然 state 数据已经更新,但是界面没有更新
// 假如你还想使用这个版本,我们可以简单修改一下
// 使用 nextTick 包裹以后,会在上一次执行完毕,再执行下一次
// 就正常了
import { createApp, nextTick } from "vue"
nextTick(() => {
store.commit('setLoading', false)
})亲测有效。
未来这个 bug 应该会被修复掉,使用未来的新版本应该就没有这个问题了