Select 组件中 MenuItem 上的 Material-UI 工具提示 zIndex

Ant*_*ine 5 javascript css reactjs material-ui

我的问题很简单,我有一个<Tooltip>组件围绕着一个<Select>组件,当我单击“选择”时,工具提示会显示在菜单项上,如下所示:

正常行为:

没有 MenuItem 的工具提示

不那么正常的行为:

菜单项上的工具提示

因此,我保留了 Material-UI 和工具提示的所有默认值:zIndex: 1500但据我所知,MenuItem 没有默认值。我尝试将 MenuItem 的 zIndex 设置为 1501,但它仍然具有相同的行为。

我想知道将工具提示留在 MenuItem 后面的干净方法是什么,如果不可能,则在打开 Select MenuItems 时隐藏工具提示...

我的代码如下所示:

<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>
Run Code Online (Sandbox Code Playgroud)

如果我将工具提示的 zIndex 设置为较小的值,它会隐藏在 menuItems 后面,但我真的不想使用默认值,因为它也会干扰其他 zIndex 值。

我做了一个CodeSandbox:https ://codesandbox.io/s/rn68z4xlo

小智 9

Liam 的答案完全不正确,Joe 的答案不适用于 MUI v4。

Tooltip 组件从 Popper 组件获取其 z-index,因此仅更改 Tooltip 的 z-index 不会产生任何效果。您需要将 z-index 从 Tooltip 传递到 Popper。

就像这样:

<Tooltip title={"foo"} PopperProps={{style:{zIndex:0}}}>
Run Code Online (Sandbox Code Playgroud)


Lia*_*iam 1

这是 Material-Ui Tooltip 中的一个错误,我想它已经在新版本中修复了

您可以通过将 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>
Run Code Online (Sandbox Code Playgroud)

或者,如果您想在菜单打开时完全隐藏它,请使用此代码

 <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>
Run Code Online (Sandbox Code Playgroud)

定义的工具提示状态

class MultipleSelect extends React.Component {
  state = {
    name: [],
    tooltip: false,
  };
Run Code Online (Sandbox Code Playgroud)

https://codesandbox.io/s/0xrlmv96vl

  • 首先,您不能将字符串分配给 zIndex,其次,这不会覆盖其初始 zindex。 (3认同)