如何从 React 18 降级到 17.0.2

2025-06-07

如何从 React 18 降级到 17.0.2

我可能不是唯一一个真正害怕技术变化导致我的代码中断的人,但你不必再害怕了。随着新 React 18 的部署,我将向你展示如何轻松降级到 React 17.0.2,这样你就有足够的时间为升级做好准备。

1. 创建 React 应用

  • 创建一个文件夹并为其命名react-downgrade-2022或任何您想要的命名。

  • 打开终端并运行 create-react-app

npx create-react-app .
Enter fullscreen mode Exit fullscreen mode

2. 卸载 react 和 react-dom

当你创建一个 React 应用程序时,它将附带 React 18 和 React-dom 18,但这不是我们想要的,因为我们正在尝试降级到 React 17.0.2 和 React-dom 17.0.2

{
  "name": "react-downgrade-2022",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.16.4",
    "@testing-library/react": "^13.0.1",
    "@testing-library/user-event": "^13.5.0",
    "react": "^18.0.0", // <===
    "react-dom": "^18.0.0", // <===
    "react-scripts": "5.0.1",
    "web-vitals": "^2.1.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

Enter fullscreen mode Exit fullscreen mode

我们必须卸载 react 18 和 react-dom 18,现在运行
npm uninstall react react-dom

npm uninstall react react-dom
Enter fullscreen mode Exit fullscreen mode

这样做是为了让我们摆脱 react 18 和 react-dom 18,记住,我们正在尝试降级到 react 17 和 react-dom 17。

图片描述

3 安装 react 17 和 react-dom 17

现在要得到我们真正想要的,也就是 react 17 和 react-dom 17,再次运行npm install react@17.0.2 react-dom@17.0.2

npm install react@17.0.2 react-dom@17.0.2
Enter fullscreen mode Exit fullscreen mode

React 会用一些不推荐使用的警告标志向你大喊,忽略显示的任何警告标志。

4 修改 index.js

请记住,因为我们已经安装了 React 18,index.js所以会附带一些默认的 React 18 设置,我们必须更改这些设置以匹配 React 17.0.2

导航到目录index.js中的文件src


// react 18

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
Enter fullscreen mode Exit fullscreen mode

现在复制并粘贴以下代码到您的index.js文件中


// react 17.0.2

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';

ReactDOM.render(
  <React.StrictMode>
    <App/>
  </React.StrictMode>,
  document.getElementById('root')
);
Enter fullscreen mode Exit fullscreen mode

5 完成

现在,我们已经成功从 React 18 降级到 React 17.0.2
运行npm start

npm start
Enter fullscreen mode Exit fullscreen mode

谢谢,请关注我

给我买杯咖啡

文章来源:https://dev.to/ifeanyichima/how-to-downgrade-from-react-18-to-1702-818
PREV
How To Search And Replace String Across Multiple Files in Vim Single-file search and replace (substitution) Args Method1: Using argdo Method2: perform substitution with macros and repeat it
NEXT
如何计算系统设计容量