【发布时间】:2021-04-23 14:15:49
【问题描述】:
我在一个名为 recursively 的 useCallback 挂钩中递增 foo。但是,递增的foo 不会反映在回调中。
const { useState, useCallback } = React;
const App = () => {
const [foo, setFoo] = useState(0);
const recursiveCallback = useCallback(() => {
// always logs 0
console.log(foo);
// incrementing foo
setFoo(foo + 1);
setTimeout(() => {
// recursive call
recursiveCallback();
}, 250);
}, [foo]);
return <button onClick={recursiveCallback}>Click Me</button>;
}
ReactDOM.render(<App />,document.getElementById('root'));
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
【问题讨论】:
-
您在
setTimeout中使用的recursiveCallback指的是foo具有先前值的那个。 -
嗨 Andrea,请检查更新后的问题并附上注释:)
标签: javascript reactjs typescript redux react-hooks