javascript - use effect 仅在状态变为 false 时运行

标签 javascript reactjs typescript react-hooks use-effect

我使用 React,我有一个名为 isModalOpen 的状态。

const [isModalOpen, setIsModalOpen] = useState<boolean>(false);

我有一个 useEffect 函数

useEffect(() => {},[]);

我希望每次我的 isModalOpen 变为false(仅 false)时运行我的使用效果

我写了

useEffect(()=>{},[!isModalOpen])

但是这个方法在每次 isModalOpen 改变时运行(true 到 false 或 false 到 true)

最佳答案

useEffect 的依赖数组是为了通知 useEffect 在值发生变化时运行。因此,无论您传递 isModalOpen 还是 !isModalOpen,它都是一回事,因为它只是检查值是否已更改,即 false 变为 true 或 true 变为 false。

有条件地执行某事的方法是在回调函数中添加一个条件

useEffect(()=>{
    if(!isModalOpen) {
        // write your code here
    }

},[isModalOpen]);

但是,如果在某些时候您想在 useEffect 中同时访问旧值和新值,您可以实现一个 usePrevious Hook ,如 React Hook FAQs 中所述。

关于javascript - use effect 仅在状态变为 false 时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66963684/

相关文章:

javascript - 使用 Angular 连接多个数组

javascript - 无法达到某个值......ReactJS

javascript - react 测试库 : Unable to Change Material UI DatePicker Input Value

javascript - Mock.mockImplementation 不是函数

angular - 如何在 Angular 2 中使用 underscore.js 库

javascript - 范围过滤器仅在第一个 Controller 中工作

javascript - AngularJS TypeError : d is undefined - Firefox, angular-route.min.js:7 Uncaught TypeError: 无法读取未定义的属性 'isArray' - Chrome

javascript - Blob URL 上传到 firebase 存储

javascript - TypeScript:使用 jQuery 进行 AJAX 调用的类型提示成功数据

node.js - 如何以编程方式将 typescript 文件渲染为 javascript?