首页 > 解决方案 > 刷新页面后,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

标签: reactjs

解决方案


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/


推荐阅读