问题标签 [xstate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - 如何使用 xstate 跟踪分析事件
我在我的 React Native 应用程序中使用 xstate 来管理一个相当复杂的流程。我想系统地记录状态机中发生的每个状态转换和事件的分析事件。到目前为止,我还没有想出如何在不手动调用logEvent
每个事件的动作的情况下做到这一点。例如,在一台比我构建的机器小得多的机器上:
这么多重复:(
我读到的另一种方法是使用interpret
和添加一个onTransition
监听器(https://xstate.js.org/docs/guides/interpretation.html#transitions)。但是,这还需要手动发送事件以触发 onTransition 侦听器,因此它不是 imo 的解决方案。
我还找到了@xstate/analytics,但是没有文档,而且自述文件说我们不应该使用它^^
有没有办法在每次转换时调用一个动作而不会重复我自己?
vue.js - 包含条件的 xstate 配置结构 & 可用于 vue-kanban pkg
我正在尝试创建在移动到另一个状态时需要检查的 xstate Machine(使用VueJs)。
问题是尝试的方式不适用于vue-kanban(https://github.com/BrockReece/vue-kanban) pkg
下面是我的示例状态机配置:
这是看板的用户界面(https://ibb.co/6rWxN0F)
在我通过将条件添加到“暂停”状态来更改上述配置之后,我无法从“暂停”状态移动到任何地方。
以下是新配置:
任何帮助解决它!
vue.js - XState 不会停留在空闲状态
我在我的应用程序中xstate
一起使用vuex
:
vuex
处理用户、api调用、响应项等。xstate
主要处理复杂的表单交互。
由于这个原因,复杂的表单包含多个组件,它们相互通信我必须在组件级别而xstate
不是vuex
在内部实现。在 xstate 可视化器内部,它似乎可以工作:
我可以在状态之间切换,但在实际应用程序中它不能回到它的初始状态(空闲)然后停留在那里。它总是转换回下一个。我不知道我做错了什么,但我已经在控制台记录了 formState getter,输出如下所示:
(它立即从空闲状态切换)
typescript - Typescript/xstate:将对象拆分为可区分的联合
我有这种类型:
我想将每个属性转换为一个对象并创建一个有区别的联合。
所以它变成了这样:
你能帮助我吗。
javascript - 使用@xstate/test “缺少事件配置”
我正在使用基于模型的测试使用@xstate/test
and来测试状态机@testing-library/react
。
基本上,我正在测试这台机器:
然后我正在配置模型,并使用const testPlans = itemDamagedModel.getSimplePathPlans();
.
通过大约 200 个通过测试,一切似乎都运行顺利,但我遇到了一些问题:
- 对于我的每个测试和每个事件,我都会收到警告
Missing config for event "VALIDATE"
。我不明白它应该是什么意思。 - 即使我在模型活动中故意打错字,我的所有测试都会得到验证。有时测试的数量会减少,但我希望在模型找不到特定输入或按钮时看到一些警告。
- 测试都通过了,即使我将一个空的 div 作为我的 xstate/test 渲染组件传递。
javascript - 如何防止 XState 节点在接收事件时重置其子并行状态?
我正在探索 XState 世界并尝试重新创建本次演讲中提到的机器@davidkpiano
并且面临着正确进行过渡的问题。当我向父机器发送消息时,它会重置所有子机器。
例如:我希望机器在我一个接一个地触发CHANGE和FOCUS事件后处于肮脏和专注的状态。但是在发送FOCUS消息后,原始状态会重置回原始状态。
我发现了这个问题,但是多个转换做同样的事情(正如它在问题本身中实际描述的那样)
另外,我不想将有关原始、聚焦和触摸状态的所有信息存储到 context 中,因为它不会像使用状态机那样安全。
下面的代码可复制粘贴到https://xstate.js.org/viz/
reactjs - xstate 将事件数据从服务传递到 onDone
我有 xstate 反应脚本,用户填写表格,然后按提交。提交时,xstate 收到了一个 send("VALIDATE", {formData}) ,它通过验证表单的服务运行。成功后,脚本将转换到目标:“成功”,我需要最终的“成功”状态来调用实际上保存脚本的外部函数。
我可以将数据获取到验证器函数中,但是在onDone之后,后续的成功状态似乎看不到数据。
如何将数据从验证事件连接到成功事件?
我通过以下方式触发验证:send("VALIDATE", formData)
node.js - 为什么 xstate 转换在 nodejs 中对我不起作用?
我有存储客户的列状态的客户表。其中 state=1 表示挂起,state=2 表示活动 state=3 表示停用,state=4 表示已删除,我必须根据操作管理数据库中的客户状态。我正在尝试使用状态机来检查当前状态下允许的操作。我做错了什么吗?请帮忙。提前致谢。
javascript - 为什么这个分配不触发?
在阅读了官方的 xstate 教程之后,我尝试实现我自己的机器,灵感来自xstate 的 dev.to上的这篇文章。
output
除了似乎没有更新之外,一切都按预期工作。我认为这项任务没有完成它的工作。我忘记了什么?
为了进行比较,这里有一个来自 xstate 的工作演示,其中上下文中的变量按预期更新。
我的代码: