viv*_*anu 6 javascript reactjs react-native react-hooks use-state
这是所有新反应开发人员中的一个流行问题,但不知何故我无法理解可用解决方案背后的逻辑。我正在尝试使用钩子更新状态变量并尝试读取更新后的值,但它总是返回先前的值而不是新值。下面是我的代码执行顺序。
onClick={setTransactionAccountId}
Run Code Online (Sandbox Code Playgroud)
单击按钮时,它会执行以下代码并更新状态,但会console.log显示旧值。
const [accountId, setAccountId] = useState(0);
const setTransactionAccountId = e => {
console.log("Clicked ID:", e.currentTarget.value);
setAccountId(e.currentTarget.value);
console.log("accountId:", accountId);
};
Run Code Online (Sandbox Code Playgroud)
控制台日志:
单击的 ID:0 帐户 ID:0
单击的 ID:1 accountId:0
谁能告诉我这种行为背后的原因以及如何解决它。
来自反应文档
React 可以将多个 setState() 调用批处理为单个更新以提高性能。
由于 this.props 和 this.state 可能会异步更新,因此您不应依赖它们的值来计算下一个状态。
状态更新可能是批量和异步更新的,因此当调用 console.log() 时状态可能尚未更新。您将在下次调用 useEffect 挂钩时获得有保证的更新结果。
accountId不会更新此渲染。您必须等待下一次渲染才能更新它。 accountId仅在useState调用时填充在函数组件的顶部。你在渲染的中间。如果您需要实际值,请继续将其从e.currentTarget.value.
| 归档时间: |
|
| 查看次数: |
13866 次 |
| 最近记录: |