Reactjs 如何将一个组件设置为位于另一个组件下?

Reactjs 如何将一个组件设置为位于另一个组件下?,reactjs,material-ui,Reactjs,Material Ui,我正在使用React和Material UI设置一个小型Web应用程序,但我不知道如何使我的抽屉组件适合我的应用程序栏。使用react developer工具,我可以在控制台中看到我的组件正在获取类名,但无论我做什么,我的样式都不会应用于它们。目前,抽屉正在通过屏幕顶部的应用程序栏进行剪切,占据页面的整个高度,而不是安装在应用程序栏下。为了使我的“侧栏”组件适合我的“导航栏”组件,我需要更改什么?我之所以将这两个组件创建为单独的组件,其中一个原因是我计划在以后为它们添加更多功能。多谢各位 我一直

我正在使用React和Material UI设置一个小型Web应用程序,但我不知道如何使我的抽屉组件适合我的应用程序栏。使用react developer工具,我可以在控制台中看到我的组件正在获取类名,但无论我做什么,我的样式都不会应用于它们。目前,抽屉正在通过屏幕顶部的应用程序栏进行剪切,占据页面的整个高度,而不是安装在应用程序栏下。为了使我的“侧栏”组件适合我的“导航栏”组件,我需要更改什么?我之所以将这两个组件创建为单独的组件,其中一个原因是我计划在以后为它们添加更多功能。多谢各位

我一直在关注“应用程序栏下的剪辑”组件演示,我还参考了

这是我的一段代码

我的主应用程序

import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
import CssBaseline from '@material-ui/core/CssBaseline';
import Navbar from './Navbar';
import Sidebar from './Sidebar';

const useStyles = makeStyles(theme => ({
  App: {
    display: 'flex',
  },
  navbar: {
    zIndex: theme.zIndex.drawer + 1,
  },
  drawer: {
    width: 240,
    flexShrink: 0,
  },
  toolbar: theme.mixins.toolbar,
}));

function App() {
  const classes = useStyles();

  return (
    <div className="App">
      <CssBaseline/>
      <Navbar position="fixed" className={classes.navbar}></Navbar>
      <Sidebar className={classes.drawer}></Sidebar>
    </div>
  );
}

export default App;
从“React”导入React;
从'@material ui/core/styles'导入{makeStyles};
从“@material ui/core/CssBaseline”导入CssBaseline;
从“/Navbar”导入导航栏;
从“./Sidebar”导入侧栏;
const useStyles=makeStyles(主题=>({
应用程序:{
显示:“flex”,
},
导航栏:{
zIndex:theme.zIndex.drawer+1,
},
出票人:{
宽度:240,
flexShrink:0,
},
工具栏:theme.mixins.toolbar,
}));
函数App(){
const classes=useStyles();
返回(
);
}
导出默认应用程序;
我的导航栏组件

import React from 'react';
import AppBar from '@material-ui/core/AppBar';
import Toolbar from '@material-ui/core/Toolbar';

function Navbar() {
    return (
        <AppBar positon="static">
            <Toolbar>
                <h2>Earthquake Mapper</h2>
            </Toolbar>
        </AppBar>
    );
}

export default Navbar;
import React from 'react';
import Drawer from '@material-ui/core/Drawer';

function Sidebar() {

    return (
        <Drawer variant="permanent">
            <div>   
                <ul>
                    <li>This</li>
                    <li>Will</li>
                    <li>Be</li>
                    <li>Where</li>
                    <li>Our</li>
                    <li>Data</li>
                    <li>Go</li>
                </ul>
            </div>
        </Drawer>
    );
}

export default Sidebar;
从“React”导入React;
从“@material ui/core/AppBar”导入AppBar;
从“@material ui/core/Toolbar”导入工具栏;
函数Navbar(){
返回(
地震制图仪
);
}
导出默认导航栏;
我的边栏组件

import React from 'react';
import AppBar from '@material-ui/core/AppBar';
import Toolbar from '@material-ui/core/Toolbar';

function Navbar() {
    return (
        <AppBar positon="static">
            <Toolbar>
                <h2>Earthquake Mapper</h2>
            </Toolbar>
        </AppBar>
    );
}

export default Navbar;
import React from 'react';
import Drawer from '@material-ui/core/Drawer';

function Sidebar() {

    return (
        <Drawer variant="permanent">
            <div>   
                <ul>
                    <li>This</li>
                    <li>Will</li>
                    <li>Be</li>
                    <li>Where</li>
                    <li>Our</li>
                    <li>Data</li>
                    <li>Go</li>
                </ul>
            </div>
        </Drawer>
    );
}

export default Sidebar;
从“React”导入React;
从“@material ui/core/Drawer”导入抽屉;
函数边栏(){
返回(
  • 这个
  • 意志
  • 在哪里
  • 我们的
  • 资料
); } 导出默认边栏;
首先,将AppBar位置设置为“固定”

Material UI解决此问题的方法是将一个高度相等的空div添加到工具栏(您将其作为AppBar组件中的第一个子项,以便标题最小高度等于工具栏高度)作为抽屉组件的第一个子项

默认情况下,此高度为64px,但您应该从
theme.mixins.toolbar
获取此值。您可以在教程中看到这一点

所以你最终会做这样的事情:

import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
import Drawer from '@material-ui/core/Drawer';

const useStyles = makeStyles(theme => ({
    toolbar: theme.mixins.toolbar,
}));

function Sidebar() {
    const classes = useStyles();

    return (
        <Drawer variant="permanent">
            <div className={classes.toolbar} />
            <div>   
                <ul>
                    <li>This</li>
                    <li>Will</li>
                    <li>Be</li>
                    <li>Where</li>
                    <li>Our</li>
                    <li>Data</li>
                    <li>Go</li>
                </ul>
            </div>
        </Drawer>
    );
}

export default Sidebar;

从“React”导入React;
从'@material ui/core/styles'导入{makeStyles};
从“@material ui/core/Drawer”导入抽屉;
const useStyles=makeStyles(主题=>({
工具栏:theme.mixins.toolbar,
}));
函数边栏(){
const classes=useStyles();
返回(
  • 这个
  • 意志
  • 在哪里
  • 我们的
  • 资料
); } 导出默认边栏;
查看更多关于如何使用主题提供程序和自定义主题的信息
主题配置。

另一种选择是在抽屉中放置一个空的
,以填充空间

从“React”导入React;
从“@material ui/core/Drawer”导入抽屉;
从“@material ui/core/Toolbar”导入工具栏;
函数边栏(){
返回(
  • 这个
  • 意志
  • 在哪里
  • 我们的
  • 资料
); } 导出默认边栏;
您是否收到任何错误?没有错误,控制台中没有弹出任何内容。我可以看到我的三个组件在react developer tools控制台中也被分配了正确的类名。感谢您的建议,我进行了建议的编辑,但没有任何更改。我是否需要通过道具将一些东西从应用程序组件传递到边栏组件?