在 React 中使用 XState 检查当前机器状态的问题
Problem to check the current machine state using XState in React
我试图从 React 组件 (state.value) 的函数内部检查机器状态,但它永远不会改变当前状态,它总是打印初始状态,但如果我放置一个 onClick 事件在组件中调用 console.log(state.value),它起作用了...我做错了什么?
const [state, send] = useMachine(knightMachine);
const loop = () => {
console.log(state.value);
setTimeout(loop, 10);
}
/// Always print the initial state.
<div
onClick={() => {
console.log(state.value);
}}
></div>
/// It Prints the right value
这可能是由于过时的关闭。您总是在循环中读取 state
的 closed-in 值。
相反,您可以阅读 service.getSnapshot()
:
const [state, send, service] = useMachine(knightMachine);
// ...
console.log(service.getSnapshot().value); // up-to-date value
// ...
我试图从 React 组件 (state.value) 的函数内部检查机器状态,但它永远不会改变当前状态,它总是打印初始状态,但如果我放置一个 onClick 事件在组件中调用 console.log(state.value),它起作用了...我做错了什么?
const [state, send] = useMachine(knightMachine);
const loop = () => {
console.log(state.value);
setTimeout(loop, 10);
}
/// Always print the initial state.
<div
onClick={() => {
console.log(state.value);
}}
></div>
/// It Prints the right value
这可能是由于过时的关闭。您总是在循环中读取 state
的 closed-in 值。
相反,您可以阅读 service.getSnapshot()
:
const [state, send, service] = useMachine(knightMachine);
// ...
console.log(service.getSnapshot().value); // up-to-date value
// ...