【发布时间】:2020-04-10 20:29:32
【问题描述】:
我正在使用 React Material UI,并且我有一个 Textfield,如果我专注于它,它将部署一个带有简单菜单的 Popper。如果 Textfield 失去焦点,那么 Popper 会自行关闭。问题是我需要在不关闭 Popper 的情况下从菜单中选择任何选项,但是当我这样做时,Textfield 会失去焦点。我需要的是仅当我在文本字段或菜单之外单击时才保持 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 和 Popper:
<ClickAwayListener onClickAway={blur}>
<>
<TextField ... />
<Popper ...>
...
</Popper>
</>
</ClickAwayListener>
两次都不成功...我怎样才能做到这一点?
【问题讨论】:
-
使用 Material-UI 的
Autocomplete组件来实现不是更好吗? -
@Dekel,不...我需要这样做。我没有使用自动完成功能,因为我需要保持组件的其余部分可用。
标签: reactjs material-ui