reactjs - create-react-app MaterialUI خطا: فراخوانی هوک نامعتبر


میخواهم Create-react-app انجام دهم و از Material UI استفاده کنم، اما با خطای Hooks مواجه میشوم.

آیا چیزی دیگری را از دست دادهام؟

این یک بیانیه خطا است.

خطا: فراخوانی هوک نامعتبر. هوکها تنها میتوانند در داخل بدنه یک کامپوننت تابعی فراخوانی شوند. این میتواند به یکی از دلایل زیر رخ دهد:

  1. ممکن است نسخههای ناسازگار از React و رندر کننده (مانند React DOM) داشته باشید
  2. ممکن است قوانین هوکها را شکسته باشید
  3. ممکن است بیش از یک نسخه از React در همان برنامه داشته باشید. برای نکاتی در مورد چگونگی رفع اشکال و حل این مشکل به https://reactjs.org/link/invalid-hook-call مراجعه کنید.

من موارد زیر را انجام دادم.

npx create-react-app my-app --template typescript

npm install @mui/material

npm install @mui/icons-material

پکیج.جیسان

{
  "name": "muitest",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@mui/icons-material": "^5.2.1",
    "@mui/material": "^5.2.3",
    "@testing-library/jest-dom": "^5.16.1",
    "@testing-library/react": "^11.2.7",
    "@testing-library/user-event": "^12.8.3",
    "@types/jest": "^26.0.24",
    "@types/node": "^12.20.37",
    "@types/react": "^17.0.37",
    "@types/react-dom": "^17.0.11",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-scripts": "4.0.3",
    "typescript": "^4.5.2",
    "web-vitals": "^1.1.2"
  },
  "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"
    ]
  }
}

اپ.tsx

import React from 'react';
import './App.css';
import GitHubIcon from '@mui/icons-material/GitHub';

function App() {
  return (
    <div className="App">
        <GitHubIcon />
    </div>
  );
}

export default App;

پاسخ شماره ۱

https://create-react-app.dev/docs/adding-typescript/ https://github.com/mui-org/material-ui

لطفاً هر دو لینک را مرور کن، باید چند بسته اضافه کنی سپس کار خواهد کرد.

npx create-react-app my-app --template typescript
npm install @mui/material @emotion/react @emotion/styled @types/material-ui

برای تایپاسکریپت، ما نیاز به نصب چند بسته @types داریم.