React 和 MaterialUI - 使用论文的 GridLayout

Posted

技术标签:

【中文标题】React 和 MaterialUI - 使用论文的 GridLayout【英文标题】:React and MaterialUI - GridLayout using papers 【发布时间】:2020-03-24 23:05:51 【问题描述】:

我正在使用 react-grid-layout 库创建一个自适应网格,其中每个项目都是来自 react material ui 的纸质组件。

运行我在浏览器中收到的应用程序时遇到问题: “TypeError:react__WEBPACK_IMPORTED_MODULE_0___default.a.createContext 不是函数” “./node_modules/@material-ui/styles/esm/useTheme/ThemeContext.js”模块下

我对反应还很陌生,所以也许我做了一些非常愚蠢的事情,但我们将不胜感激,因为我有点无能:)

Home 组件是:

import  makeStyles  from '@material-ui/core/styles';
import Typography from '@material-ui/core/Typography';
import  withStyles  from '@material-ui/styles';
import  Paper  from 'material-ui';
import React from 'react';
import GridLayout from 'react-grid-layout';

const useStyles = makeStyles(theme => (
    root: 
        padding: theme.spacing(3,2),
    ,
));

class Home extends React.Component 


    render() 
        var layout = [
            i: 'a', x: 0, y: 0, w: 1, h: 2, static: true,
            i: 'b', x: 1, y: 0, w: 3, h: 2, minW: 2, maxW: 4,
            i: 'c', x: 4, y: 0, w: 1, h: 2
        ];

        const  classes  = this.props;

        return (
            <GridLayout className="layout" layout=layout cols=12 rowHeight=30 width=1200>
                <Paper className=classes.root>
                    <Typography key="a" variant="h5" component="h3">
                        This is a set of paper!
                    </Typography>
                </Paper>
                <Paper className=classes.root>
                    <Typography key="b" variant="h5" component="h3">
                        This is a set of paper!
                    </Typography>
                </Paper>
                <Paper className=classes.root>
                    <Typography key="c" variant="h5" component="h3">
                        This is a set of paper! 
                    </Typography>
                </Paper>
            </GridLayout>
        );
    


    /* 
    <MapContainer latitude=31.97973975 longitude=34.74769792490634/>
    */


export default withStyles(useStyles)(Home);

这是 App.js 文件:

import  MuiThemeProvider  from 'material-ui/styles';
import React from 'react';
import  BrowserRouter as Router, Route  from 'react-router-dom';
import './App.css';
import Home from './pages/Home';

class App extends React.Component 

    render() 
        return (
            <MuiThemeProvider>
                <Router>
                    <Route path="/" component=Home/>
                </Router>
            </MuiThemeProvider>
        );
    


export default App;

Package.json 依赖项

  "dependencies": 
    "@material-ui/core": "^4.7.0",
    "@material-ui/icons": "^4.5.1",
    "google-maps-react": "^2.0.2",
    "mobx": "^5.15.0",
    "prop-types": "^15.7.2",
    "react": "^15.1.0",
    "react-dom": "^15.1.0",
    "react-google-maps": "^9.4.5",
    "react-grid-layout": "^0.17.1",
    "react-router-dom": "^5.1.2",
    "react-scripts": "3.2.0"

谢谢提醒!

【问题讨论】:

看来你需要更新 react。你用的是哪个版本? 我已经用我的依赖项修改了这个问题。为什么版本会导致这个错误? 【参考方案1】:

您可以在 Material-UI 文档 (https://material-ui.com/getting-started/installation/#npm) 中找到以下内容:

请注意,react >= 16.8.0 和 react-dom >= 16.8.0 是对等依赖项。

Material-UI v4 依赖于 React 钩子和上下文——它们都不在 React 15 中(显示在你的依赖项中)。

【讨论】:

以上是关于React 和 MaterialUI - 使用论文的 GridLayout的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MaterialUI 4 中使用 react-jss?

React / MaterialUI - 同名导入导出

(React、MaterialUI、Context)MUI 自动完成/TextField 未在挂载时呈现其值

Material UI:React Autocomplete 组件(受控)和 disableCloseOnSelect

自动完成问题(Material UI + React + Reagent/ClojureScript)

React:MaterialUI Select Component 不显示传递的值