Я использую библиотеку реакции material-ui для рендеринга некоторых раскрывающихся меню с использованием компонентов <FormControl>
, <Select>
и <MenuItem>
. Массив параметров для этого раскрывающегося меню довольно большой, и я хотел бы установить максимальную высоту в раскрывающемся списке, чтобы он не становился слишком большим. В настоящее время я изо всех сил пытаюсь сделать это, как я объясню ниже.
basi c раскрывающийся список с использованием material-ui:
const MenuValidNotes = ({
schedule,
indexTrack,
indexSchedule,
actionSetTrackScheduleItemNote,
}) => {
const listNotesMenu = () => (
ARRAY_VALID_NOTES.map((noteObj, i) => (
<MenuItem
value={noteObj.note}
key={`track-item-${indexTrack}-schedule-${indexSchedule}-note-${i}`}
onClick={() => actionSetTrackScheduleItemNote(indexTrack, indexSchedule, noteObj.midiNumber)}
>{noteObj.note}</MenuItem>
))
)
return(
<div>
<FormControl>
<InputLabel>Note</InputLabel>
<Select
defaultValue={noteValueToNoteObject(schedule.noteValue).note}
>
{listNotesMenu()}
</Select>
</FormControl>
</div>
)
}
Один из способов, который я нашел для установки максимальной высоты, - чтобы отобразить дочерние элементы <Select>
в div, присвойте ему имя класса и примените к нему CSS.
Однако компонент <Select>
требует, чтобы его дочерние элементы были <MenuItem>s
, поэтому наличие <div>
вокруг приведет к повреждению атрибута value
, что означает, что он не будет отображать правильное значение. (обнаружил это при чтении Material-UI Select e.target.value is undefined )
const listNotesMenu = () => (
ARRAY_VALID_NOTES.map((noteObj, i) => (
<div className="..."> // this div will break the 'value' of the Select component
<MenuItem ... />
</div>
))
)
поэтому в идеале я хотел бы иметь возможность контролировать как значение, так и максимальное -высота своих детей. Это вообще возможно? В документации material-ui на select нет такого примера, а список свойств компонента <Select
не включает никаких полей для управления высотой. Спасибо за вашу помощь.
(На скриншотах выше показана эта проблема. На одном снимке экрана показано, что можно управлять максимальной высотой с помощью оболочки div, но это приводит к нарушению значения; на другом показано раскрывающееся меню без обертка div, что означает, что мы не можем установить максимальную высоту).