首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XState不处于空闲状态

XState不处于空闲状态
EN

Stack Overflow用户
提问于 2021-05-24 08:22:31
回答 1查看 233关注 0票数 2

我在我的应用程序中使用xstatevuex

  • vuex处理用户、api调用、响应项等。
  • xstate主要处理复杂的表单交互。

由于这个原因,复杂的表单包含多个组件,这些组件相互通信--我不得不实现xstate,不是在组件级别上,而是在vuex内部。在xstate可视化器中,它似乎有效:

我可以在状态之间切换,但是在实际的应用程序中,它不能返回到它的初始状态(空闲),然后保持在那里。它总是会回到下一个版本。我不知道我做错了什么,但是控制台记录了formState getter,输出如下所示:

代码语言:javascript
复制
formState idle 
formState createImageContent 

(它立即从空闲状态切换)

下面是实现的基本示例:https://codesandbox.io/s/boring-shape-b4lgk

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-27 09:32:53

Form.vue组件中存在问题。准确地说,这一行:

代码语言:javascript
复制
<v-window v-model="$store.getters['form/formState'].value">

我不是虚拟专家,所以我不知道为什么v-window要用值createImageContent更新v-model,但它确实是这样做的。我通过激活Vuex 严格模式发现了这个问题,当某个状态在变异之外发生变异时,就会产生错误。它引发一个错误,从堆栈跟踪中可以看到问题是由v-window变异$store.getters['form/formState'].value引起的。

简单的修复方法不是使用v-model,而是使用:value

代码语言:javascript
复制
<v-window :value="$store.getters['form/formState'].value">

演示

更新

好吧,我找到原因了。v-window有一个默认情况下为true无证支柱mandatory (来源)。在这种模式下,v-window期望(并强制执行)至少一个<v-window-item>子组件在任何时候都处于活动状态。当您将状态设置为idle时,不存在具有此值的<v-window-item>,因此它自己选择一个项(首先未禁用)并更新v-model。因此,另一个解决方案是将:mandatory="false"添加到<v-window>中。

但是不使用v-model可能更安全、更干净,因为Vuex getter不应该与v-model一起使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67668825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档