6

我的 RA 项目在本地部署时渲染得很好,但是,当我将构建目录复制到 S3 存储桶进行部署时,它渲染得一团糟。有时它可以工作,但大多数时候它呈现如下图所示。它在使用 AOR 的两种环境中都可以正常工作。

环境

React-admin 版本:2.0.3 没有出现问题的最后一个版本(如果适用):React 版本:16.4.1 浏览器:Chrome/Safari

类风湿关节炎的图像

4

2 回答 2

6

@material-ui如果您的依赖项中有不同的版本,则生产版本会出现问题。并将在下一个版本中修复。

这是完整的问题:https ://github.com/marmelab/react-admin/issues/1782

同时,您可以编写一个解决方法(也可以在问题中找到):为 JSS 编写您自己的类生成器。

const escapeRegex = /([[\].#*$><+~=|^:(),"'`\s])/g;
let classCounter = 0;

// Heavily inspired of Material UI:
// @see https://github.com/mui-org/material-ui/blob/9cf73828e523451de456ba3dbf2ab15f87cf8504/src/styles/createGenerateClassName.js
// The issue with the MUI function is that is create a new index for each
// new `withStyles`, so we handle have to write our own counter
export const generateClassName = (rule, styleSheet) => {
    classCounter += 1;

    if (process.env.NODE_ENV === 'production') {
        return `c${classCounter}`;
    }

    if (styleSheet && styleSheet.options.classNamePrefix) {
        let prefix = styleSheet.options.classNamePrefix;
        // Sanitize the string as will be used to prefix the generated class name.
        prefix = prefix.replace(escapeRegex, '-');

        if (prefix.match(/^Mui/)) {
            return `${prefix}-${rule.key}`;
        }

        return `${prefix}-${rule.key}-${classCounter}`;
    }

    return `${rule.key}-${classCounter}`;
};

并用 JSSProvider 包装管理员:

import JssProvider from 'react-jss/lib/JssProvider';

export default () => (
    <JssProvider generateClassName={generateClassName}>
        <Admin />
    </JssProvider>
);

如果它与 JSS 类缩小和 Material-UI 相关,它应该可以解决您的 CSS 问题。

于 2018-06-21T14:20:38.140 回答
1

非常感谢@Kmaschta 为我节省了数小时的搜索时间。

我不仅遇到了上面显示的问题……而且当我点击 chrome 刷新时,应用程序将在浏览器的最左侧重新加载,无法到达那里。

我查看了 react -admin 1782上面的 react-admin 问题,这是 package.json 中给出的依赖项和 react-admin 的内部 @material-ui 依赖项的问题

由于@material-ui 12621,我正在编辑我的答案以显示具有最新版本的依赖项:

@material-ui/core": "1.5.1",

"@material-ui/icons": "1.1.0",

“反应管理员”:“2.2.3”,

“反应”:“16.4.2”,

“反应域”:“16.4.2”

于 2018-09-06T01:41:42.113 回答