在xstate中使用嵌套状态

时间:2020-05-10 06:23:42

标签: javascript xstate

我正在用两个灯泡进行家庭自动化项目。请参考以下我使用xstate创建的状态图。我也有要点,因此您也可以在可视化器中看到它。

https://xstate.js.org/viz/?gist=119995cdff639c5b99df55278a32cf57

xstate chart

您可以看到我需要处于autoInactive状态,这样我才能打开和关闭灯泡,这很好。问题是在autoActive状态下,我仍然想使用运动传感器来打开和关闭灯泡。

这就是我想要做的。

  • autoInactive-用户可以使用UI打开和关闭灯泡。
  • autoActive-用户无法操作灯泡,但是运动传感器可以打开和关闭灯泡。

如何使用xstate实现此目的?

1 个答案:

答案 0 :(得分:2)

我知道你说过你已经解决了这个问题,但我只是想看看如何解决这个问题 - 所以也许它对你或其他人有帮助。

我基本上以稍微不同的方式处理这个问题(这可能不适用于您的上下文)。 我认为灯的状况(开或关)实际上与您所处的模式(自动或手动)无关。所以我最终得到了两种并行状态,一种用于纯粹控制灯的状态,另一种允许根据您所处的模式以不同方式管理灯的管理接口状态:

enter image description here

https://xstate.js.org/viz/?gist=4b815be2cc42e6e51b15ba39c99d53dc