XState 是一个类似于 ReactRedux 状态管理的一个库,用来管理和维护状态,但是比Redux功能更加丰富,也更加复杂。 它并不是一个简单的状态管理库,它是一个状态机管理库

”状态过渡“,而不是”状态修改“,就是因为应用只能按照状态图的约定进行状态直接的转换,相当于可以理解为只能按照地图软件搜索出来的路径来走。你不可能用任意门进行空间跳跃(而 redux 是可以的)。

  • 定义状态时,要注意状态的从属关系,否则很容易状态失控
  • statecontext是否有明确的区分?该如何区分?一个值如何定义它是一个state还是context数据,在redux中全部的数据都是 state需要明确,什么是状态、什么是 context,如何定义具体业务的状态
  • 每个状态可以对应不同的 context?
  • 同一时刻只能存在一个状态,不会出现两个状态同时触发action的情况
  • 如何嵌套状态导致代码层级过深,可以考虑将子状态抽离成单独的状态机,再设置到父状态机种
  • 全局状态管理
    • redux 中有全局 store的概念
    • dva model 中的状态也是全局的,且通过 model 分开管理
    • 在xstate 中实现全局状态的管理和维护,是不是只能通过 React Context 来实现?或者通过演员 Actor 来实现
      • 哪种方式更好?
      • 该如何实现一个可扩展、容易维护、干净的全局状态?
  • xstate 中有相当多的通过 字符串来操作的行为,很容易造成问题,所以严格使用 typescript 是很有必要的
    • target
    • actions

参考