我的問題很簡單,我有一個& lt工具提示& gt圍繞a & lt選擇& gt組件,當我單擊Select時,工具提示會顯示在菜單項上,如下所示:
正常行為:
不太正常的行為:
所以我保留了Material-UI和Tooltip的所有默認值:zIndex: 1500,但是據我所見,MenuItem沒有默認值。我試圖將MenuItem的zIndex設置為1501,但它仍然有相同的行為。
我想知道有什么干凈的方法可以把工具提示留在菜單項后面,如果不可能的話,就在選擇菜單項打開時隱藏工具提示...
我的代碼如下所示:
<Tooltip title={'Filter by status'}>
<Select value={this.state.status} onChange={this.handleChange.bind(this, Filter.Status)}>
{statuses.sort(this.filterItemSortFn).map(item => {
return (<MenuItem style={{zIndex: 1501}} value={item}>{item}</MenuItem>);
})}
</Select>
</Tooltip>
如果我將工具提示的zIndex設置為一個較小的值,并且它隱藏在menuItems的后面,但是我真的不想使用默認值,因為它也會干擾其他的zIndex值。
我做了一個代碼沙箱:https://codesandbox.io/s/rn68z4xlo
###Liam的回答完全不正確,Joe的不適用MUI v4。
Tooltip組件從Popper組件獲取其z索引,因此僅更改Tooltip的z索引不會有任何效果。您需要從工具提示中將z索引向上傳遞給Popper。
像這樣:
<Tooltip title={"foo"} PopperProps={{style:{zIndex:0}}}>
# # #這是材質界面工具提示中的一個錯誤,我猜它已經在新版本中修復了
您可以通過在工具提示中添加zIndex來解決這個問題
<Tooltip title={"Message"} style={{ zIndex: '1' }}>
<Select
value={this.state.name}
onChange={this.handleChange}
input={<Input id="select-multiple" />}
MenuProps={MenuProps}
>
{names.map(name => (
<MenuItem key={name} value={name}>
{name}
</MenuItem>
))}
</Select>
</Tooltip>
或者如果你想完全隱藏它,如果菜單打開使用這個代碼
<Tooltip title={"Message"}
onClick={() => this.setState({ tooltip: !this.state.tooltip })}
style={this.state.tooltip ? {display: 'none'}:{ zIndex: '1' }}>
<Select
value={this.state.name}
onChange={this.handleChange}
input={<Input id="select-multiple" />}
MenuProps={MenuProps}
>
{names.map(name => (
<MenuItem key={name} value={name}>
{name}
</MenuItem>
))}
</Select>
</Tooltip>
定義的工具提示狀態
class MultipleSelect extends React.Component {
state = {
name: [],
tooltip: false,
};
https://codesandbox.io/s/0xrlmv96vl
###MUI 5:對于那些對模態和工具提示有問題的人來說,這將有所幫助:
const Tooltiptheme = createTheme({
components: {
MuiTooltip: {
styleOverrides: {
tooltip: {
// overrides tooltip
},
popper: {
// overrides the popper
zIndex: 700 + '!important',
}
},
},
},
});