Как исправить эту ошибку «Ошибка: Вы вызываете стили(стили)(компонент) с неопределенным компонентом».

#reactjs #material-ui

Вопрос:

Я пытаюсь создать средство выбора диапазона дат реакции с помощью пользовательского интерфейса Material. Сначала у меня возникли некоторые проблемы с makeStyles, и я решил их с помощью withStyles : импорт { withStyles } из «@material-ui/стили»;

Теперь у меня такая проблема : «Ошибка: Вы вызываете стили(стили)(компонент) с неопределенным компонентом».

введите описание изображения здесь

Вот структура моего кода :

 import { withStyles } from '@material-ui/styles';
const useStyles = withStyles((theme) => ({
     ...
)}

function App() {
  const classes = useStyles();

  return (
     ...
  );
}

export default App;
 

и мои зависимости:

 "dependencies": {
    "@date-io/date-fns": "^2.10.11",
    "@emotion/react": "^11.4.0",
    "@emotion/styled": "^11.3.0",
    "@material-ui/core": "^5.0.0-beta.0",
    "@material-ui/icons": "^5.0.0-beta.0",
    "@material-ui/lab": "^5.0.0-alpha.39",
    "@material-ui/pickers": "^4.0.0-alpha.12",
    "@material-ui/styles": "^5.0.0-beta.0",
    "@testing-library/jest-dom": "^5.14.1",
    "@testing-library/react": "^11.2.7",
    "@testing-library/user-event": "^12.8.3",
    "axios": "^0.21.1",
    "clsx": "^1.1.1",
    "date-fns": "^2.0.0-beta.5",
    "form-data": "^2.5.1",
    "prop-types": "^15.7.2",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-feather": "^2.0.9",
    "react-helmet": "^6.1.0",
    "react-perfect-scrollbar": "^1.5.8",
    "react-router-dom": "^5.2.0",
    "react-scripts": "4.0.3",
    "react-toastify": "^7.0.4",
    "react-use-uuid": "^1.1.0",
    "react-uuid": "^1.0.2",
    "recharts": "^2.0.9"
  },
 

Ответ №1:

withStyles не делает то же самое, makeStyles что . Похоже, вы только что изменили имя вызываемой функции, но по-прежнему относитесь к ней так, как будто она создаст пользовательский крючок. withStyles это компонент более высокого порядка: вы даете ему компонент, и он вернет новый компонент, обернутый вокруг вашего. Затем он передает классы в ваш компонент в качестве опоры.

Если вы хотите использовать withStyles , он должен выглядеть так:

 import { withStyles } from '@material-ui/styles';

function App({ classes }) {
  return (
     ...
  );
}

export default withStyles((theme) => ({
     ...
)})(App);
 

Ответ №2:

По документам — https://material-ui.com/styles/basics/#higher-order-component-api — вы предполагаете использовать withStyles вот так —

export default withStyles(stylesObject)(component);