Как использовать подзаголовки в меню выбора пользовательского интерфейса материала - PullRequest
1 голос
/ 25 мая 2020

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

Вот codeSandbox того, что я пытаюсь.

Ниже приведен фрагмент моего кода:

<Select
        className={classes.root}
        MenuProps={{ className: classes.menu }}
        value="Pick one"
        onChange={e => {}}
      >
        {subHeaders.map(header => (
          <li key={header}>
            <ul>
              <ListSubheader>{header}</ListSubheader>
              {items.map(item => (
                <MenuItem key={item} value={item}>
                  {item}
                </MenuItem>
              ))}
            </ul>
          </li>
        ))}
      </Select>

Вот снимок проблемы:

enter image description here

1 Ответ

1 голос
/ 26 мая 2020

Используя компонент Select , мы можем даже воспроизвести поведение с некоторыми исправлениями. Но у вас не пойдет . Компонент Select не ожидает, что элементы вложены в дочерние элементы . Таким образом, мы никогда не сможем идентифицировать выбранный элемент .

В качестве альтернативы у нас есть Автозаполнение компонент. Он может лучше предоставить то, что вам нужно.

enter image description here

Что касается приведенного вами примера, мы можем что-то сделать, но, опять же, мы не будем в состоянии поддерживать состояние выбранного элемента. Чтобы добиться того же поведения, что и список, нам нужно применить такое же поведение к списку, который будет отображать Меню. Select отобразит меню, которое наследует List, поэтому мы можем применить то же поведение, что и в примере списка, с помощью свойства prop MenuListProps .

Я применил исправления к вашему примеру

Edit Button

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...