在 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

// ...