Почему для правильного рендеринга в документации по Material-UI для прокрутки панелей приложений необходимы два компонента <Toolbar/>?

Я пытаюсь лучше понять, как работает Material-UI, и я был сбит с толку, почему мне нужно использовать компонент панели инструментов дважды, чтобы моя панель инструментов с прокруткой отображалась правильно, как в этот пример кода.

Если я не включу вторую панель инструментов после ElevationScroll, меню, которое я хочу разместить под панелью приложения, будет отображаться под панелью приложения. Если я включу его, мое меню сдвинется вниз и будет хорошо отображаться. Это прекрасно работает, но я не понимаю, почему мне нужно включать в свой jsx дополнительный элемент, чтобы все выглядело правильно, как в этом упрощенном примере:

function SettingsMenu() {
  return (
    <ElevationScroll>
      <AppBar>
        <Toolbar>
          <Typography>
            Settings
          </Typography>
        </Toolbar>
      </AppBar>
    </ElevationScroll>
    <Toolbar/>
    <MyMenu/>
  );
}

Я проверил в Google Devtools, чтобы выяснить, почему это происходит, вторая панель инструментов отображается как div с почти идентичными стилями CSS, но без дочерних элементов. Когда я удаляю его вручную в Devtools, меню, как и раньше, возвращается за панель приложения. Спасибо за любую помощь!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
186
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это потому, что AppBar имеет positon: fixed;, что означает, что он не будет занимать место на экране, поэтому вы, кроме другой панели инструментов, которая будет находиться под AppBar, будет толкать содержимое вниз и занимать то же место, что и панель инструментов.

Другие вопросы по теме

Похожие вопросы

В компонентах React, где хранить неизменяемые данные, возвращаемые API, чтобы методы компонента могли иметь к ним доступ?
В массиве ReactJS появляются случайные запятые
Как передать входные реквизиты избыточной формы в раскрывающийся список пользовательского выбора
Mui-datatables: Предупреждение: Функциональные компоненты не могут иметь ссылок. Попытки получить доступ к этой ссылке не увенчаются успехом. Вы хотели использовать React.forwardRef()?
Реагировать: как отображать данные ответа API в формате данных: массив (i), чтобы реагировать на внешний интерфейс?
Обновление состояния массива2 после перетаскивания обновляет массив1, который является источником перетаскивания
Как установить фоновое изображение заголовка из отдельного файла jsx?
Как получить доступ к состоянию компонента без сохранения состояния внутри прослушивателя событий окна?
`window.removeEventListener('keydown')` не работает в функции реагирующих хуков
Flow: необязательный реквизит, использующий универсальные типы