问题标签 [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.
xstate - 如何使用 xstate 建模多个页面
我正在尝试使用 xstate 构建一个真实世界的应用程序,但在为应用程序启动建模时遇到了麻烦。
用户可以通过键入www.ex.com进入应用程序开始进入主页,但用户也可以进入应用程序www.ex.com/any-page
有人可以举一个具有多个页面的建模应用程序示例吗
用户可以在登录页面或主页上未经身份验证,但不是安全页面
或者
用户可以通过身份验证并在任何页面上
我希望每个页面都有自己的状态,这就是提示问题的原因。
angular - 如何设置 Xstate 以在 Angular 中使用 Redux Dev Tool
我在 Angular 项目中使用 xstate 进行状态管理。我做了
启动我的机器时,但 redux 开发工具没有从我的项目中获取任何事件。除了添加 redux 扩展外,是否需要任何其他设置。
reactjs - 将 useMachine 与 useContext 结合使用
我正在开发一个 UI 项目,该项目通过共享上下文处理状态更新,与此处描述的非常相似
对于某些组件,我不会通过 xstate 来玩弄状态机。
现在,理想情况下,我希望我的状态机在进入状态时调度某些事件。但是,状态机获取我的 AppContext 的最佳方式是什么?
目前,我正在处理组件本身的这个事件调度,观察状态机的状态并在它进入某个状态时根据需要调度一个事件:
这很好用,但它给我的印象是糟糕的设计。我认为直接从状态机而不是从组件分派这个事件会更干净。
状态机有什么好的方法来获取 AppContext 吗?
简单地为状态机创建一个工厂方法,将调度作为参数并保留它是否明智?
javascript - 在哪里/如何进行单元测试和 xstate 保护功能?
我在状态机中使用了保护功能。
我想对这个守卫进行单元测试(出于问题的目的,我已经对其进行了简化)以确保它始终按预期工作(可能有人会更改上下文结构,或者从导致 data.number 的服务器返回到事件等)。
在哪里/我该怎么做?xstate 是否有常规模式?或者我应该在我想要的地方做一个完全独立的单元测试?
javascript - 有没有办法使用从 Firebase 返回的承诺来初始化 Xstate 状态机?
我正在尝试使用 Firebase 保持状态。我目前正在使用“saveState”功能,该功能可以正常工作并将最新状态正确保存到 Firebase。
现在我希望能够根据 Firebase 中最近保存的状态来初始化状态机。在下面的代码中,我尝试使用我的“loadState”函数为 Xstate 提供一个配置对象。它目前返回一个带有正确状态配置的承诺。
这是我的“保存状态”代码:
这是我的“loadState”函数,它从 Firebase 返回一个带有正确配置信息的承诺。
现在我的问题是尝试使用上面的“loadState”函数加载 Xstate。在这里,我尝试使用 useMachine React 钩子:
我最终得到错误:“TypeError:无法读取未定义的属性'数据'”,我相信这是因为承诺尚未解决,导致尝试读取未定义的值。
这甚至可能吗,还是我做错了?
我对这一切都很陌生,任何指导将不胜感激。谢谢你。
javascript - xstate 中的参与者和调用服务有什么区别?
我对 xstate 中演员和调用服务之间的区别有点困惑,因为它们在我看来是一样的。
javascript - Xstate 收到警告:未找到操作类型的实现
ADD_THOUGHT_TIME_STAMP
我在两个不同的州有类似的行动,所以我尝试通过休耕官方文档actions
来将该行动转移到xStat 中。
但我不断收到错误消息:“找不到操作类型 addThoughtTimStamp 的实现”
这是有效的代码:
这是不起作用的代码:
我错过了什么?
PS如果您在我的代码中看到其他问题,请随时发表评论,谢谢。
reactjs - 当我运行 npm test 时,xstate 不会改变我机器的状态(如果我运行应用程序,它会正常工作)
我有这个组件
我有这台机器
我有这个后卫
我有这个动作
我有一个自定义渲染
最后我有我的测试文件
当我跑步时,npm test
我注意到以下内容:
- 在触发 TOGGLE 事件之前,守卫被调用了两次
- 该动作永远不会被调用
- xstate 从不改变我的复选框组件的状态
- UNCHECKED 状态的 meta.test 被调用了两次并且可以正常工作
- CHECKED 状态的 meta.test 被调用一次并失败
提前致谢!
jestjs - 跨多个进程传播生成的测试?
我正在使用jest来运行我的测试,并且一直在尝试由@xstate/test
. 这基本上涉及创建一个状态图,表示我的应用程序的所有可能状态、在它们之间转换的事件等。然后它使用给定的事件生成通过状态图的所有可能路径,您可以将其转换为大量测试。
这很酷,但我遇到的问题是随着测试范围的扩大,它们的数量正在迅速增加。Jest 支持通过多个进程运行测试,但不幸的是,它只能通过基于测试文件的拆分来实现。由于我只有一个基于模型的睾丸的测试状态图,它全部包含在一个文件中,并且所有内容都在一个进程中连续运行。这变得很慢。
有没有办法让笑话将大量生成的测试分成单独的进程?我有一个方法的想法,它基本上会使用存根测试文件,然后包含一个主文件,该文件可以吐出所有需要运行的测试。不幸的是,虽然您可以检查process.env.JEST_WORKER_ID
测试中没有办法告诉我有多少工作人员,所以任何单个工作人员都不知道它应该运行多少测试。
有没有人巧妙地解决了这个问题?甚至可能吗?我应该放弃使用 jest 并jest-worker
处理多线程并做我自己的骇人听闻的事情吗?