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

时间:2018-03-09 17:08:54

标签: javascript css reactjs material-ui

我的问题很简单,我在<Tooltip>组件周围有一个<Select>组件,当我点击Select时,工具提示显示在MenuItems上,如下所示:

正常行为:

Tooltip without MenuItem

行为不正常:

Tooltip over MenuItem

所以我保留了Material-UI和Tooltip的所有默认值:zIndex: 1500但是我没有看到MenuItem的默认值。我试图将MenuItem的zIndex设置为1501,但它仍然具有相同的行为。

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

这是我的代码:

<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值。

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

1 个答案:

答案 0 :(得分:1)

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

您可以通过在工具提示中添加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