reactjs - 刷新页面后,useEffect 中的 setState 不起作用?
问题描述
const [test, setTest] = useState("");
useEffect(() => {
setTest("NOT EMPTY");
if(test) {
console.log(test)
} else {
console.log("ITS EMPTY")
}
}, [])
这是我的代码的简化形式,当我保存它并且页面会自动刷新,因为 nodemon 输出是:NOT EMPTY
但是当我刷新页面或点击 f5 输出是:EMPTY
解决方案
useEffect(() => {
setTest("NOT EMPTY");
if(test) {
console.log(test)
} else {
console.log("ITS EMPTY")
}
}, [test]) // pass test as a dependency
在组件首次加载时,您将看到“ITS EMPTY”,然后一旦状态更新,您将看到“NOT EMPTY”
进一步阅读:https ://overreacted.io/a-complete-guide-to-useeffect/
推荐阅读
- scenekit - 如何移动从 Blender 导入的节点
- c - 在 Ubuntu for Windows IIS Server 上运行,C 代码为 recv() 返回 -1
- ios - 如何使嵌入的 YouTube 视频在 IOS 的 Cordova 应用程序的 IFrame 中工作?
- php - PHP 在 adobe reader 中打开 PDF 文件
- javascript - 让我的代码在一个浏览器选项卡的后台运行
- sql - ASP Classic:新表的记录集记录计数 -1 但旧表可以吗?
- azure - 如果用户已经使用 AzureAD 对 MainApp 进行了身份验证,是否应该要求 MainApp 中包含的应用重新使用 AzureAD 进行身份验证
- firebase - 如何将颤振应用程序与 2 firebase 数据库集成
- ios - 如何在 UIView 之外读取 ApplePencil 压力数据?
- python - Pandas DataFrame to_excel中的多个标头