useEffect

作者: 殇城阡陌 | 来源:发表于2021-03-24 08:06 被阅读0次

    使用 useEffect 完成副作用操作。赋值给 useEffect 的函数会在组件渲染到屏幕之后执行。

    在函数组件主体内(这里指在 React 渲染阶段)改变 DOM、添加订阅、设置定时器、记录日志以及执行其他包含副作用的操作都是不被允许的,因为这可能会产生莫名其妙的 bug 并破坏 UI 的一致性。

    清除 effect:通常,组件卸载时需要清除 effect 创建的诸如订阅或计时器 ID 等资源。要实现这一点,useEffect 函数需返回一个清除函数。

    effect 的执行时机:在浏览器完成布局与绘制之后,传给 useEffect 的函数会延迟调用。

    effect 的条件执行:

        默认情况下,effect 会在每轮组件渲染完成后执行。这样的话,一旦 effect 的依赖发生变化,它就会被重新创建。

        可以给 useEffect 传递第二个参数,它是 effect 所依赖的值数组。只有当所依赖的值数组改变后才会重新创建。如果你要使用此优化方式,请确保数组中包含了所有外部作用域中会发生变化且在 effect 中使用的变量,否则你的代码会引用到先前渲染中的旧变量。

        如果想执行只运行一次的 effect(仅在组件挂载和卸载时执行),可以传递一个空数组([])作为第二个参数。

    相关文章

      网友评论

          本文标题:useEffect

          本文链接:https://www.haomeiwen.com/subject/paxfhltx.html