其实这个问题很基础,甚至还不涉及到任何框架,这里我用最简单的模型来简化一下你这个问题 const [isPolling, setIsPolling] = useState(true); const handleClick = () => { setIsPolling(false) console.log(isPolling); // true }; `isPolling`是一个常量,在同一个作用域内,无论使用什么方式,都不可能实现后续去改变它的值,这就回答了你的疑问,为什么调用 `setIsPolling(false)` 后,`isPolling`的值还是 `true` 其实每次更新 `useState` 定义的状态,都会驱动 `函数组件` 重新执行,在重新执行的作用域中,`isPolling`的值才是更新后的值, 那么在更新之前的上一次作用域中如何确保拿到更新后的值呢,React也提供了相应的方式,使用 `setter` 的回调 setIsPolling((prevIsPolling) => { console.log(isPolling); // false }) React内部会在组件对应的 `fiber` 结构上维护一个更新队列,对于同一个状态连续的 setState 调用会形成一个循环链表,将上一次 setState 的结果传递给下一个 setState 的回调,因此通过回调的方式你能拿到上一次 `setIsPolling` 的新值