Material UI со стилями

#reactjs #material-ui #react-with-styles

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

Вопрос:

Изображение ошибкиДобрый день!

Ребята, вы сталкивались с этим при использовании крючка withStyles в Material UI для добавления пользовательских стилей к вашему компоненту?

Это мой package.json:

 {
  "name": "socialapp-client",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@material-ui/core": "^4.11.0",
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.5.0",
    "@testing-library/user-event": "^7.2.1",
    "axios": "^0.20.0",
    "dayjs": "^1.8.35",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-router-dom": "^5.2.0",
    "react-scripts": "3.4.3"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "proxy": "<link to my Google firebase API>"
}
  

это App.js код

 import React, { Component } from "react";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import { Home } from "./pages/home";
import { login } from "./pages/login";
import { signup } from "./pages/signup";
import { Navbar } from "./components/Navbar";
import { ThemeProvider, createMuiTheme } from "@material-ui/core/styles";

import "./App.css";

const theme = createMuiTheme({
  palette: {
    primary: { main: "#29b6f6" },
    secondary: { main: "#ffa726" },
  },
});

class App extends Component {
  render() {
    return (
      <ThemeProvider theme={theme}>
        <div className="App">
          <Router>
            <Navbar></Navbar>
            <div className="container">
              <Switch>
                <Route exact path="/" component={Home} />
                <Route path="/login" component={login} />
                <Route path="/signup" component={signup} />
              </Switch>
            </div>
          </Router>
        </div>
      </ThemeProvider>
    );
  }
}

export default App;
  

и это код для страницы входа:

 import React, { Component } from 'react'
import  withStyles  from '@material-ui/core/styles/withStyles';


const styles = {
    mantra:{
        textAlign: 'center'
    }
}
export class login extends Component {
    
    render() {
        const  { classes } = this.props;
        console.log(classes.mantra)
        return (
            <div>
                <h1>login Page</h1>
            </div>
        )
    }
}

export default withStyles(styles)(login);
  

Согласно проверке документации, я все делаю правильно, но я заблокирован из-за ошибки

 TypeError: Cannot read property 'mantra' of undefined
  

Комментарии:

1. Я воспроизвел и до сих пор вижу, что это работает codesandbox.io/s/inspiring-hugle-5k5c2?file=/src/App.js

2. Вот почему я в замешательстве, я использую ту же функциональность с другой страницы, и она работает так, как ожидалось, я добавил скриншот ошибки к сообщению.

3. какую версию material-ui вы используете?

4. Я использую 4.11.0

5. происходит ли это после перехода с material-ui v3?