React Admin显示非常混乱

时间:2018-06-21 14:09:52

标签: react-admin

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

环境

反应管理员版本:2.0.3 没有出现问题的最新版本(如果适用): 反应版本:16.4.1 浏览器:Chrome / Safari

Image of RA

2 个答案:

答案 0 :(得分:4)

如果您的依存关系中有不同版本的@material-ui,则生产版本存在问题。 And it will be fixed in the next version.

这是完整的问题: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问题。

答案 1 :(得分: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”,

     

“ react-dom”:“ 16.4.2”