Я использую пользовательский интерфейс React Material, и у меня есть текстовое поле, которое, если я сосредоточусь на нем, развернет Popper с простым меню. Если текстовое поле теряет фокус, то Поппер закрывается. Дело в том, что мне нужно выбрать любую опцию из меню без закрытия Popper, но когда я это сделаю, текстовое поле теряет фокус. Что мне нужно, так это держать Popper, только если я нажму за пределами текстового поля или меню.
Все на этом codesandbox .
Я пробовал это:
const selected = prop => {
console.log(prop);
}
...
<Paper elevation={3} className={classes.paper}>
<MenuList>
<MenuItem onClick={() => selected('first')}>
First Option
</MenuItem>
<MenuItem onClick={() => selected('next')}>
Next Option
</MenuItem>
<MenuItem onClick={() => selected('last')}>
And Last Option
</MenuItem>
</MenuList>
</Paper>
</Popper>
Также пробовал с ClickAwayListener
, оборачивая оба компонента, TextField и Поппер:
<ClickAwayListener onClickAway={blur}>
<>
<TextField ... />
<Popper ...>
...
</Popper>
</>
</ClickAwayListener>
Неудачно оба раза ... Как мне этого добиться?