#reactjs #material-ui
#reactjs #материал-пользовательский интерфейс
Вопрос:
Я пытаюсь выровнять по левому краю выпадающий список меню, какие бы значения я ни вводил, они не дают такого результата, может кто-нибудь посоветовать, как это сделать?
https://material-ui.com/components/button-group/#split-button
Вот как выглядит мой шаблон:
<Grid container direction="column" alignItems="flex-start">
<Grid item xs={12}>
<ButtonGroup variant="contained" color="primary" ref={anchorRef} aria-label="split button">
<Button onClick={() => handleClick(options[selectedIndex])}>
{options[selectedIndex]}
</Button>
<Button
color="primary"
size="small"
aria-controls={open ? "split-button-menu" : undefined}
aria-expanded={open ? "true" : undefined}
aria-label="select mode type"
aria-haspopup="menu"
onClick={handleToggle}
>
<ArrowDropDownIcon />
</Button>
</ButtonGroup>
<Popper open={open} anchorEl={anchorRef.current} role={undefined} transition disablePortal>
{({ TransitionProps, placement }) => (
<Grow
{...TransitionProps}
style={{
transformOrigin: placement === "bottom" ? "left top" : "left bottom",
}}
>
<Paper>
<ClickAwayListener onClickAway={handleClose}>
<MenuList id="split-button-menu">
{options amp;amp;
options.map((option, index) => (
<MenuItem
key={option}
disabled={index === selectedIndex}
selected={index === selectedIndex}
onClick={(event) => handleMenuItemClick(event, index)}
>
{option}
</MenuItem>
))}
</MenuList>
</ClickAwayListener>
</Paper>
</Grow>
)}
</Popper>
</Grid>
</Grid>
Ответ №1:
Попробуйте это:
<Grow
{...TransitionProps}
anchorOrigin={{
horizontal: 'left',
vertical: 'bottom',
}}
transformOrigin={{
horizontal: 'left',
vertical: 'top',
}}
>
{insert children here}
</Grow>
Обновить
Это то, что вы хотите, то есть добавить placement='bottom-start'
в свой Popper
компонент. Спасибо, что дали мне больше контекста.
<Popper
open={open}
anchorEl={anchorRef.current}
role={undefined}
transition
disablePortal
placement='bottom-start'
>
{...children...}
</Popper>
Комментарии:
1. Спасибо, но, похоже, это не помогает по-прежнему центрироваться.
2. Можете ли вы поделиться тем, что находится внутри вашего
Grow
компонента?3. отредактировал вопрос с помощью полного шаблона, по сути, он используется по умолчанию в material-ui
4. Обновленный ответ! Изменения, описанные ранее в
Grow
компоненте, не являются необходимыми.