React 18严格模式导致组件渲染两次[重复]

2024-01-26

对严格模式的更改反应版本 18导致我的代码渲染两次,这会导致错误axios中止控制器,但我不知道如何清除error应用程序渲染两次后从浏览器控制台。

请注意:我正在开发一个注册/登录应用程序,即使在我成功登录后,React带我回到登录页面,因为axios error

useEffect(() => {
    let isMounted = true;
    // used by axios to cancel request
    const controller = new AbortController();

    const getGoals = async () => {
        try {
            const response = await goalPrivate.get("/goals", {
                // option to cancel request
                signal: controller.signal
            })
            console.log(response?.data);
            // set goals state when component mounts
            isMounted && setGoals(response?.data);
        } catch (error) {
            console.log(error.message);
            // when refreshToken expires
            navigate("/login", { state: { from: location }, replace: true });
        }
    }

    getGoals();

    // cleanup function
    return () => {
        // don't set state if component unmounts
        isMounted = false;
        // cancel request if component unmounts
        controller.abort();
    }
    
    // eslint-disable-next-line react-hooks/exhaustive-deps
}, [])

React StrictMode 调用所有 Effects 两次,以确保它们的清理/卸载处理程序按预期工作。您可能需要相应地更改效果,即使它们具有空的依赖项列表并且通常不会在站点关闭之前卸载。

请注意,这只发生在严格+开发模式下。在生产构建中,效果只会在其依赖项发生变化时被调用一次。

有关更多上下文,请参阅https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React 18严格模式导致组件渲染两次[重复] 的相关文章

  • 在 onclick 事件上请求麦克风

    有一天 我偶然发现了这个 Javascript 录音机的例子 http webaudiodemos appspot com AudioRecorder index html http webaudiodemos appspot com Au
  • 如何在javascript中动态向对象数组添加值?

    这是一个对象数组 var data label 1 value 12 label 1 value 12 label 1 value 12 label 1 value 12 我如何动态地为这些添加值 我尝试了以下代码但没有成功 var lab
  • 通过纯 JavaScript 获取 div 的第 n 个子元素

    我有一个名为 myDiv 的 div 元素 我怎样才能得到 myDiv 的第n个孩子DOM https en wikipedia org wiki Document Object Model操纵 Markup function reveal
  • Chrome 扩展程序可以相互通信吗?

    我正在编写一个Chrome扩展程序 并且想要实现一个接口或api 以便我将来制作的其他扩展程序可以使用它 最终的效果可能如下 分机 B 呼叫extensionA someMethod someParameters 并向分机A发送一些数据 分
  • 返回上一页

    我正在使用表格来 评价 页面 此表单将数据 发布 到其他地方的 php 脚本 我只是想在处理表单后显示一个链接 这将使用户返回到上一页 我可以在 php 脚本中使用 javascript 来执行此操作吗 GF 您可以使用链接来调用histo
  • 如何在create-react-app中注入没有REACT_APP前缀的dotenv变量?

    我有一个项目要从旧版 React 应用程序迁移到标准版create react app一个 未弹出 在遗留项目中 它手动加载 env文件与dotenv and dotenv expand并通过webpack注入DefinePlugin cr
  • Visual Studio 改变 Ctrl-K-D 的工作方式

    In Visual Studio I m using 2012 is there any way of editing the way that Ctrl K D combinations handles its Auto Formatti
  • 仅在 Chrome 上我收到此错误:Uncaught TypeError: Illegal constructor [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我在 Chrome 上加载 jQuery 时 我会收到此错误 Uncaught TypeError Illegal constr
  • Pjax动画

    我终于让 pjax 工作了 但我还有另一个问题 如何添加一些 jquery 动画 如淡出 幻灯片旧内容和淡入 幻灯片新内容 默认情况下 pjax 只是更改内容 没有任何好看的效果 任何帮助将非常感激 此致 基本上 你有一堆事件 https
  • 转义 \u200b(零宽度空格)和其他非法 JavaScript 字符

    我有一组 JavaScript 对象 我引导到后端模板 以在页面加载时初始化我的 Backbone js 集合 它看起来像这样 作为 Twig 模板 我遇到的问题是某些文本字段包含 u200b 零宽度空格 这会破坏
  • 如何调试超时等待异步 Angular 任务?无法在角度页面上找到元素

    编辑 请注意 在 ernst zwingli 的帮助下 我找到了问题的根源 因此 如果您遇到相同的错误 他指出的修复之一可能会帮助您 我的问题是量角器本身的一个已知问题 如果您认为这可能是您 我已经扩展了我的步骤 以在我最初的问题之后查明问
  • 冒泡可用于图像加载事件吗?

    我可以用吗 window addEventListner 某种程度上来说 我所有的图像都有一个display none 图像加载后 我想设置display inline 这样我就可以规范下载图像时显示的内容 在这种情况下 我无法预加载图像
  • JSONP 使用 JQuery 从 HTTPS 协议获取 JSON

    我正在尝试获取从 https 安全站点发送的 JSON 客户端希望不要使用任何服务器端语言 全部都是 Javascript 我读到 当使用 Jquery 中的 ajax 函数时 我必须使用 JSONP 才能从安全站点加载 JSON 我的第一
  • AngularStrap 工具提示禁用我的自定义指令

    我正在尝试让 bs tooltip AngularStrap 指令与我自己的名为 checkStrength 的自定义指令一起使用 该指令检查密码的强度 单独使用这些指令中的任何一个时 它们都可以正常工作 但不能一起工作 This http
  • 在 Android Chrome 中隐藏 HTML5 音频/视频通知

    我的网络应用程序上有一个 HTML5 音频元素 在某些时候 我使用以下代码以编程方式停止播放 audioElement pause audioElement currentTime 0 播放音频时 我的 Android 设备 使用 Goog
  • 在 Nodejs 中,如何停止 FOR 循环直到 MongoDB 调用返回

    我正在研究下面的代码片段 我有一个名为 stuObjList 的 JSON 对象数组 我想循环遍历数组以查找具有特定标志集的特定 JSON 对象 然后进行数据库调用以检索更多数据 当然 FOR 循环不会等待数据库调用返回并到达 j leng
  • 如何从除自身之外的其他(blazor)库引用js/css文件?

    我如何引用 使用位于引用的 blazor 项目中的 css cs 文件 该文件与 host cshtml 中的当前项目不同 我的意思是
  • 在 React Web 应用程序中使用 createjs-soundjs

    我想用https www npmjs com package createjs soundjs https www npmjs com package createjs soundjs在 React Web 应用程序上播放声音 我正常安装了
  • 绘制多边形

    我正在使用 Google Maps API V3 根据路径绘制多边形 该路径是随机未排序坐标点 LatLng 的数组 这会产生以下形状 Polylines intersect Problem 由于多边形的形状取决于路径中点的顺序 因此如何对
  • 使圆圈与 d3.js 上的多线匹配相同的颜色过滤?

    我有一个多线图 当按每种水果过滤时会更新 每条线条颜色对应不同的销售年份 在 的帮助下Shashank https stackoverflow com users 5569282 shashank 每个数据点线上的圆圈已添加到组中 而不是直

随机推荐

  • webGL 中的平面着色

    我正在尝试在 webgl 中实现平面着色 我知道varying顶点着色器中的关键字将对该值进行插值并将其传递给片段着色器 我正在尝试禁用插值 我发现flat关键字可以做到这一点 但似乎不能在 webgl 中使用 flat varying v
  • 从 TensorArray 到 Tensor

    给定一个具有固定大小的 TensorArray 和具有统一形状的条目 我想通过将 TensorArray 的索引维度作为常规轴来获取包含相同值的 Tensor TensorArrays 有一个名为 gather 的方法 据称它应该可以做到这
  • 意外的 gcc 警告:函数返回局部变量的地址 - 这是编译器错误吗?

    以下是最小的工作示例 好吧 实际上它是最小的非工作示例 当使用 gcc 从版本 5 0 到 9 3 编译时 它会发出以下警告 它甚至似乎只在发布版本中发出警告 02及更高 Code class A class B const A getA
  • RVM - MacPorts 不会通过代理更新

    我正在尝试使用 RVM 在我的 iMac 上安装 ruby 我首先输入以下内容 rvm list known 然后 我使用以下行定位我想要安装的版本 我遵循的指南建议使用 1 9 2 而不是基本的 1 8 7 rvm install 1 9
  • 多态对象字符串

    我没能理解多态性 以这个例子为例 Object o new String foo 我做不到 o substring 1 2 谁能向我解释这个问题 这是由于里氏替换原则 https en wikipedia org wiki Liskov s
  • 如何让 Jenkins 在检查更改时忽略某些文件?

    在CVS配置的 排除区域 中 我添加了以下内容 d o so a exe obj dll lib txt tar tar gz 所有具有上述扩展名的文件都应被忽略 然而 Jenkins 仍然基于某个文件夹 ABC 中的文件 build tx
  • 提取“$@”中最后一个参数之前的参数

    我正在尝试创建一个 Bash 脚本 它将将从命令行给出的最后一个参数提取到一个变量中以在其他地方使用 这是我正在编写的脚本 bin bash compact archive and compact file folder s eval LA
  • 删除 NSTokenFieldCell 的回调

    我有一个 NSTokenField 和 NSTokenFieldCell 代表托管对象 当我通过键入创建一个新的 NSTokenFieldCell 时 我的 NSTokenField 的委托 NSArrayController 将使用以下方
  • 使用 mysqldump 忽略 mysql 数据库备份中的“视图”

    我需要忽略数据库中的所有视图并使用 mysqldump 进行备份 目前我正在使用以下选项 ignore table view1 ignore table view2 ignore table view3 有没有什么方法可以在不指定所有 视图
  • Spring boot项目中定义的全局变量和应用程序变量

    我正在尝试使用 spring 和 spring boot 开发微服务 在我的项目中 我正在将整体架构转换为面向服务的架构 项目包含 20 个微服务 我需要设置应用程序变量和全局变量 我有与此相关的困惑 我在这里添加这些困惑 可以在 appl
  • reST:具有任意标题的内联链接?

    如果我定义了内部超链接目标 如何使用任意文本作为链接标题链接到它 例如 This is a very long internal link target A short reference to the very long link tar
  • Web API 帮助页面 - 用户特定的响应类型

    我正在开发一个 API 它根据用户输出不同的响应 并且我当前正在使用 ResponseType 属性来描述返回的响应类型 但这仅允许我指定一种类型的响应 该响应类型在用户 有什么方法可以自定义帮助页面以显示用户将获得的响应类型吗 HelpP
  • HTML 语法高亮 sublime 3 Typescript

    我正在使用 TypeScript 和 Sublime 3 如何在模板属性中添加 HTML 高亮显示 注意 我已经在使用 Microsoft TypeScript 包 看看现在它没有突出显示 这是一个快速修复 仍然可以使用您已安装的TypeS
  • 如何使用 facebook sdk 在 LoginButton 中设置权限“publish_actions”?

    我想在 Facebook 时间线上发布一张照片 我正在使用 LoginButton 来设置权限 publish actions 但是我收到错误消息 com facebook FacebookException Cannot pass a p
  • 在 Javascript onClick 事件中传递参数

    我试图在 onclick 事件中传递一个参数 下面是示例代码 div div
  • Android TTS onUtteranceCompleted 回调未被调用

    我试图让 Android TTS API 读取我的 话语 然后调用 onUtteranceCompleted 监听器 但未成功 我已经注册了我的 TTS 对象 并且它返回 SUCCESS 所以我一生都无法弄清楚为什么我的回调没有被调用 我尝
  • HikariCP 1.4.0 MBean InstanceNotFoundException

    我的数据库连接池使用以下配置 使用HikariCP 1 4 0 jdk1 6 0 45和Oracle Express 11g 在Windows 7上运行 HikariConfig config new HikariConfig config
  • HAProxy - 配置 HTTP 前端以侦听多个端口

    我的 HAProxy 配置中有一个 HAProxy HTTP 前端 如下所示 frontend myaddress net 10098 bind 80 8080 mode http log global option http server
  • 月份不是从日期打印出来的 - Java DateFormat

    如何从java中的日期获取月份 DateFormat inputDF new SimpleDateFormat mm dd yy Date date1 inputDF parse 9 30 11 Calendar cal Calendar
  • React 18严格模式导致组件渲染两次[重复]

    这个问题在这里已经有答案了 对严格模式的更改反应版本 18导致我的代码渲染两次 这会导致错误axios中止控制器 但我不知道如何清除error应用程序渲染两次后从浏览器控制台 请注意 我正在开发一个注册 登录应用程序 即使在我成功登录后 R