我有一个回调函数,我在其中设置了一些状态。国家似乎变异得很好。但是,我无法引用回调函数内的更新状态 - 它总是打印出初始状态。
所以我的问题是为什么会发生这种情况,如果我想检查回调内的更新状态,我应该如何进行?
import React, { useState, useEffect } from "react";
import Context from "./ctx";
export default props => {
const [state, setState] = useState({
x: 0,
y: 0
});
useEffect(() => {
window.addEventListener("resize", e => {
setState({
x: e.target.window.visualViewport.width,
y: e.target.window.visualViewport.height
});
console.log(`${JSON.stringify(state)}`); <<---logs the initial state.
});
return () => {
window.removeEventListener("resize");
};
}, []);
console.log(`${JSON.stringify(state)}`); <<---logs updated versions of the state.
return (
<Context.Provider
value={{
...state
}}
>
{props.children}
</Context.Provider>
);
};
Run Code Online (Sandbox Code Playgroud)