React本地开发时,组件为啥会渲染两次

225 篇文章 1 订阅
30 篇文章 0 订阅

原因是因为使用了StrictMode ,

StrictMode 是一个用来突出显示应用程序中潜在问题的工具。与 Fragment 一样,StrictMode 不会渲染任何可见的 UI。它为其后代元素触发额外的检查和警告。

StrictMode 目前有助于:

  1. 识别不安全的生命周期 {#identifying-unsafe-lifecycles}
  2. 关于使用过时字符串 ref API 的警告 {#warning-about-legacy-string-ref-api-usage}
  3. 关于使用废弃的 findDOMNode 方法的警告
    {#warning-about-deprecated-finddomnode-usage}
  4. 检测意外的副作用 {#detecting-unexpected-side-effects}
  5. 检测过时的 context API {#detecting-legacy-context-api}
  6. 确保可复用的 state {#ensuring-reusable-state}

注意:
严格模式检查仅在开发模式下运行;它们不会影响生产构建。

知道了原因之后,问题就很好解决了,我们只需要将StrictMode注释掉即可,如下所示。(一般是在index.js文件中使用)

import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import App from "./App";
import reportWebVitals from "./reportWebVitals";
import { BrowserRouter } from "react-router-dom";
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
  <BrowserRouter>
    {/* <React.StrictMode> */}
      <App />
    {/* </React.StrictMode> */}
  </BrowserRouter>
);
reportWebVitals();


  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值