0

我试图从反应组件(state.value)中的函数内部检查机器状态,但它永远不会改变当前状态,它总是打印初始状态,但是如果我在组件中放置一个 onClick 事件并调用控制台。日志(状态。值),它的工作原理......我做错了什么?

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
4

1 回答 1

0

这很可能是由于一个陈旧的关闭。您总是在读取state循环中的封闭值。

相反,您可以阅读service.getSnapshot()

const [state, send, service] = useMachine(knightMachine);

// ...

console.log(service.getSnapshot().value); // up-to-date value

// ...
于 2022-03-06T03:14:03.450 回答