为什么useEffect改变的状态值不回来?

时间:2021-07-27 11:39:57

标签: reactjs react-hooks use-effect

const [showModal, setShowModal] = useState(false);

    useEffect(()=>{
        if (!isMobile)
            if (collectShow)
                if (closeModal)
                    if (controllModal) {
                        setShowModal (true)
                    }else{
                        setShowModal (false)
                    }
    },[isMobile, collectShow, closeModal, controllModal])

    console.log (showModal)

我想像这样不断改变showModal的值, 但一旦改变,即使条件改变,它也保持不变。 我是新来的,所以我想我用错了 useEffect,请帮忙

1 个答案:

答案 0 :(得分:1)

我认为您不想要嵌套的 if。现在你的代码基本上意味着

if (!isMobile && collectShow && closeModal)
  setShowmodal(controllModal) 

所以它只有在第一个条件为真时才会改变

虽然你可能想要

setShowmodal(!isMobile && collectShow && closeModal && controllModal) 

至少这是我的假设。如果它不是你想要的,我只能建议滥用 console.log 来看看你要去哪里