Ошибка create-react-app MaterialUI: недопустимый вызов перехвата

#reactjs #typescript #material-ui

#reactjs #машинописный текст #материал-пользовательский интерфейс

Вопрос:

Я хочу сделать 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
 

package.json

 {
  "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"
    ]
  }
}
 

App.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;
 

Ответ №1:

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
 

для typescript нам нужно установить несколько пакетов package @types.

как показано, он работает для меня