【问题标题】:contents on the dashboard are being hidden by AppBar react-adminAppBar react-admin 隐藏了仪表板上的内容
【发布时间】:2020-10-13 03:39:21
【问题描述】:

我正在尝试从 admin-on-rest 更新为 react-admin,仪表板上的组件位于 AppBar 下方并被 appbar 隐藏。如何从 AppBar 添加边距或内边距?

【问题讨论】:

    标签: javascript reactjs react-admin


    【解决方案1】:

    您应该在布局顶部添加一个边距。请查看 react-admin 文档中专门用于自定义布局的示例](https://marmelab.com/react-admin/Theming.html#layout-from-scratch):

    // in src/MyLayout.js
    import * as React from 'react';
    import { useEffect } from 'react';
    import PropTypes from 'prop-types';
    import { useSelector, useDispatch } from 'react-redux';
    import { makeStyles } from '@material-ui/core/styles';
    import { ThemeProvider } from '@material-ui/styles';
    import {
        AppBar,
        Menu,
        Notification,
        Sidebar,
        setSidebarVisibility,
        ComponentPropType,
    } from 'react-admin';
    
    const useStyles = makeStyles(theme => ({
        root: {
            display: 'flex',
            flexDirection: 'column',
            zIndex: 1,
            minHeight: '100vh',
            backgroundColor: theme.palette.background.default,
            position: 'relative',
        },
        appFrame: {
            display: 'flex',
            flexDirection: 'column',
            overflowX: 'auto',
        },
        contentWithSidebar: {
            display: 'flex',
            flexGrow: 1,
        },
        content: {
            display: 'flex',
            flexDirection: 'column',
            flexGrow: 2,
            padding: theme.spacing(3),
            marginTop: '4em',
            paddingLeft: 5,
        },
    }));
    
    const MyLayout = ({ 
        children,
        dashboard,
        logout,
        title,
    }) => {
        const classes = useStyles();
        const dispatch = useDispatch();
        const open = useSelector(state => state.admin.ui.sidebarOpen);
        
        useEffect(() => {
            dispatch(setSidebarVisibility(true));
        }, [setSidebarVisibility]);
        
        return (
            <div className={classes.root}>
                <div className={classes.appFrame}>
                    <AppBar title={title} open={open} logout={logout} />
                    <main className={classes.contentWithSidebar}>
                        <Sidebar>
                            <Menu logout={logout} hasDashboard={!!dashboard} />
                        </Sidebar>
                        <div className={classes.content}>
                            {children}
                        </div>
                    </main>
                    <Notification />
                </div>
            </div>
        );
    };
    
    MyLayout.propTypes = {
        children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
        dashboard: PropTypes.oneOfType([
            PropTypes.func,
            PropTypes.string,
        ]),
        logout: ComponentPropType,
        title: PropTypes.string.isRequired,
    };
    
    export default MyLayout;
    

    【讨论】:

      猜你喜欢
      • 2019-01-26
      • 2019-12-21
      • 2019-02-28
      • 1970-01-01
      • 2013-12-17
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      相关资源
      最近更新 更多