Material-UI 生产/构建中的渲染错误
Material-UI Rendering Bugs in production / build
我在构建 react-app 时遇到了很大的问题。
我正在使用 material-ui/core v.4.10.2
正常 react-scripts 启动 dev-server 一切正常。
但是当通过 Nginx 或 npm-module 构建和服务时,渲染工作不正常...
(我在 material-ui Github 上看到了类似的问题,但它们都(错误地)关闭了
这是我的 package.json 以防我的依赖项出现问题(我当然不认为是这种情况)
{
"name": "web_app",
"version": "0.0.1",
"private": true,
"dependencies": {
"@material-ui/core": "^4.10.2",
"@material-ui/styles": "4.10.0",
"@material-ui/icons": "^4.2.1",
"@material-ui/lab": "^4.0.0-alpha.45",
"rc-color-picker": "^1.2.6",
"react": "^16.9.0",
"react-dom": "^16.9.0",
"react-infinite-scroll-hook": "^2.0.1",
"react-router-dom": "^5.0.1",
"react-scripts": "3.1.1",
"tinycolor2": "^1.4.1"
},
"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"
]
},
"devDependencies": {
"@date-io/date-fns": "^1.3.11",
"@material-ui/pickers": "^3.2.7",
"@mui-treasury/styles": "^1.1.0",
"@trendmicro/react-sidenav": "^0.4.5",
"browserfs": "^1.4.3",
"cronstrue": "^1.85.0",
"date-fns": "^2.0.0-beta.5",
"formik": "^2.1.4",
"i18next": "^17.0.13",
"i18next-browser-languagedetector": "^3.0.3",
"i18next-xhr-backend": "^3.1.2",
"lodash": "^4.17.15",
"material-ui-confirm": "^2.0.4",
"moment": "^2.24.0",
"react-animated-slider": "^2.0.0",
"react-beautiful-dnd": "^13.0.0",
"react-blur-image-loader": "^0.2.2",
"react-digital-clock": "^0.1.2",
"react-dropzone-uploader": "^2.10.1",
"react-fine-uploader": "^1.1.1",
"react-i18next": "^10.12.2",
"react-image-lightbox": "^5.1.1",
"react-picky-date-time": "^1.3.2",
"react-router-dynamic-breadcrumbs": "^2.2.0",
"react-sticky-el": "^2.0.5",
"recompose": "^0.30.0",
"store2": "^2.10.0",
"tubular-react": "^4.1.31",
"yup": "^0.28.4"
}
}
Production-Version 和 Dev-Version
中的视图图像
我不知道为什么,但几分钟前我也遇到了问题
header 比这幅图更小,但我现在无法重现……
有时候效果好一些,有时候效果差一些,可惜这样出货不合适。
但是在这个 GIF 中你会看到更多这样的问题:
(在 Dev-Mode 中没有一个视图不起作用...仅在构建时发生)
我已经尝试过的
- 尝试更新 MUI 并将其降级到第一个 4.0.0 版本
- 给了唯一的类名。
Nothing worked...sadly.
希望大家有类似的问题。
我看到有人在 MUI 上打开了一个问题 Github,但就像我说的那样,它很遗憾地关闭了
我遇到了完全相同的问题。事实证明,Webpack 会乱用 Material UI 的 JSS 优先级规则。您需要使用索引选项手动覆盖注入顺序。
在您的 makeStyles()
或 withStyles()
中,添加 {index: 1}
:
//Hook
const useStyles = makeStyles({
// your styles here
}, {index: 1})
// HOC
MyComponent = withStyles({
// your styles here
}, {index: 1})(MyComponent)
感谢@Mordechai 节省了一天的时间。
@antax,该解决方案甚至适用于主题。看来你搞砸了语法。
makeStyles(theme => ({ /* your styles here */ }), {index: 1}); //WILL WORK!!!
我在 material UI 的 Appbar 和 Navigation drawer 方面遇到问题。
The #1 reason this likely happens is due to class name conflicts once
your code is in a production bundle.
根据 Material UI 常见问题解答 (https://material-ui.com/getting-started/faq/),StylesProvider
是解决此问题的方法。它对我有用!这是我所做的-
在我的布局组件中,它有应用栏、工具栏、导航抽屉,我将整个渲染代码包含在
中
import { StylesProvider } from '@material-ui/core/styles';
return (
<StylesProvider injectFirst>
//rest of my code
<div></div>
</StylesProvider>
);
您可以在 https://material-ui.com/styles/api/#stylesprovider
上按照官方示例进行操作
使用“@material-ui/core”:“^4.11.3”,“反应”:“^17.0.1”,
根据 Material Ui,@mui/styles
已弃用。
而是使用 sx={{ //your style }}
的内联样式
我在构建 react-app 时遇到了很大的问题。
我正在使用 material-ui/core v.4.10.2 正常 react-scripts 启动 dev-server 一切正常。
但是当通过 Nginx 或 npm-module 构建和服务时,渲染工作不正常...
(我在 material-ui Github 上看到了类似的问题,但它们都(错误地)关闭了
这是我的 package.json 以防我的依赖项出现问题(我当然不认为是这种情况)
{
"name": "web_app",
"version": "0.0.1",
"private": true,
"dependencies": {
"@material-ui/core": "^4.10.2",
"@material-ui/styles": "4.10.0",
"@material-ui/icons": "^4.2.1",
"@material-ui/lab": "^4.0.0-alpha.45",
"rc-color-picker": "^1.2.6",
"react": "^16.9.0",
"react-dom": "^16.9.0",
"react-infinite-scroll-hook": "^2.0.1",
"react-router-dom": "^5.0.1",
"react-scripts": "3.1.1",
"tinycolor2": "^1.4.1"
},
"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"
]
},
"devDependencies": {
"@date-io/date-fns": "^1.3.11",
"@material-ui/pickers": "^3.2.7",
"@mui-treasury/styles": "^1.1.0",
"@trendmicro/react-sidenav": "^0.4.5",
"browserfs": "^1.4.3",
"cronstrue": "^1.85.0",
"date-fns": "^2.0.0-beta.5",
"formik": "^2.1.4",
"i18next": "^17.0.13",
"i18next-browser-languagedetector": "^3.0.3",
"i18next-xhr-backend": "^3.1.2",
"lodash": "^4.17.15",
"material-ui-confirm": "^2.0.4",
"moment": "^2.24.0",
"react-animated-slider": "^2.0.0",
"react-beautiful-dnd": "^13.0.0",
"react-blur-image-loader": "^0.2.2",
"react-digital-clock": "^0.1.2",
"react-dropzone-uploader": "^2.10.1",
"react-fine-uploader": "^1.1.1",
"react-i18next": "^10.12.2",
"react-image-lightbox": "^5.1.1",
"react-picky-date-time": "^1.3.2",
"react-router-dynamic-breadcrumbs": "^2.2.0",
"react-sticky-el": "^2.0.5",
"recompose": "^0.30.0",
"store2": "^2.10.0",
"tubular-react": "^4.1.31",
"yup": "^0.28.4"
}
}
Production-Version 和 Dev-Version
中的视图图像我不知道为什么,但几分钟前我也遇到了问题 header 比这幅图更小,但我现在无法重现…… 有时候效果好一些,有时候效果差一些,可惜这样出货不合适。
但是在这个 GIF 中你会看到更多这样的问题:
(在 Dev-Mode 中没有一个视图不起作用...仅在构建时发生)
我已经尝试过的
- 尝试更新 MUI 并将其降级到第一个 4.0.0 版本
- 给了唯一的类名。
Nothing worked...sadly.
希望大家有类似的问题。 我看到有人在 MUI 上打开了一个问题 Github,但就像我说的那样,它很遗憾地关闭了
我遇到了完全相同的问题。事实证明,Webpack 会乱用 Material UI 的 JSS 优先级规则。您需要使用索引选项手动覆盖注入顺序。
在您的 makeStyles()
或 withStyles()
中,添加 {index: 1}
:
//Hook
const useStyles = makeStyles({
// your styles here
}, {index: 1})
// HOC
MyComponent = withStyles({
// your styles here
}, {index: 1})(MyComponent)
感谢@Mordechai 节省了一天的时间。
@antax,该解决方案甚至适用于主题。看来你搞砸了语法。
makeStyles(theme => ({ /* your styles here */ }), {index: 1}); //WILL WORK!!!
我在 material UI 的 Appbar 和 Navigation drawer 方面遇到问题。
The #1 reason this likely happens is due to class name conflicts once your code is in a production bundle.
根据 Material UI 常见问题解答 (https://material-ui.com/getting-started/faq/),StylesProvider
是解决此问题的方法。它对我有用!这是我所做的-
在我的布局组件中,它有应用栏、工具栏、导航抽屉,我将整个渲染代码包含在
中import { StylesProvider } from '@material-ui/core/styles';
return (
<StylesProvider injectFirst>
//rest of my code
<div></div>
</StylesProvider>
);
您可以在 https://material-ui.com/styles/api/#stylesprovider
上按照官方示例进行操作使用“@material-ui/core”:“^4.11.3”,“反应”:“^17.0.1”,
根据 Material Ui,@mui/styles
已弃用。
而是使用 sx={{ //your style }}