【发布时间】:2019-10-27 10:37:59
【问题描述】:
我正在使用 React 上下文来传递状态。当我的状态发生变化时,子组件也会发生变化(控制台日志显示新值),但是当在函数中使用此状态时,它不会在那里更新(console.log 显示旧值)。
我需要重新渲染函数吗?怎么样?
const {user, userInfo, ref} = useSession(); <-- wrapper for useContext
console.log(userInfo); <--- correct, updated value
const haalDataOp = async () => {
console.log(userInfo.enelogic); <--- old value displaying
...
}
我正在使用按钮 (onClick) 中的函数 haalDataOp
正如有人已经提到的,我可以使用 useRef,但我不明白为什么。为什么这个简单的例子有效(摘自https://dev.to/anpos231/react-hooks-the-closure-hell-71m),而我的代码却无效:
const [value, setValue] = useState(1);
const handleClick = useCallback(
() => {
setValue(value + 1)
},
[value],
);
我还尝试在我的示例中使用 useCallback(在 dep 数组中使用 userInfo),但这并没有奏效。
【问题讨论】:
-
您在哪里/如何使用
haalDataOp? -
从一个按钮,添加到文章中
标签: reactjs