我正在尝试将 XState 填充到现有的状态管理系统中(在 React 应用程序中),并且我正在尝试弄清楚如何表示已经在旧状态管理中捕获的状态而不重复。
import {useLegacyState} from 'legacy-state-system'
import {useMachine} from '@xstate/react'
import {MyMachine} from '../machine'
const MyComponent = () => {
const [data, setData] = useLegacyState();
const [state, send] = useMachine(MyMachine)
.....JSX etc....
}
对于某些数据没有重叠,但至少在一种情况下(在屏幕上选择一个项目,导致应用程序send({type: "SELECT_ITEM", itemId: "xyz"})
启动并触发setData("XYZ")
),旧系统和新系统都关心该项目。XState 被用于 UI 状态管理,但遗留系统的副作用取决于其内部状态,因此我不能只在 XState 中拥有数据。
我对 XState 的理解是,我应该itemId
在 XState 的上下文中表示为连续数据,但这会重复数据,我担心这会带来维护问题,因为所有开发人员都需要知道同时更新两者。XState Context 有没有办法从运行时评估的函数中获取值?我知道assign
如果我想将值推送到 Context 中,但这很容易受到同样的维护问题的影响,所以我正在寻找一种方法来从legacy-state-manager
调用state.context.itemId
.