css - Antd 在非折叠的 Sider 上将工具提示应用于 Menu.Item

标签 css reactjs antd

我试图复制一个折叠的 Sider 而没有声明 collapsed={true} 纯粹是为了获得工具提示效果。

问题是,当我将 Menu.Item 包裹在 Tooltip 中时,它似乎不再被定义并且特殊触发器没有出现

import React from "react";
import ReactDOM from "react-dom";
import "antd/dist/antd.css";
import "./index.css";
import { Layout, Menu, Icon, Tooltip } from "antd";
import { sidebar } from "./nav";

const { Header, Sider, Content } = Layout;

class SiderDemo extends React.Component {
  state = {
    collapsed: false
  };

  toggle = () => {
    this.setState({
      collapsed: !this.state.collapsed
    });
  };

  render() {
    return (
      <Layout>
        <Sider trigger={null} collapsible collapsedWidth="0" breakpoint="sm">
          <div className="logo" />
          <Menu theme="dark" mode="inline" defaultSelectedKeys={["1"]}>
            {sidebar.map(menu => (
              <Tooltip placement="right" title={menu.name}>
                <Menu.Item
                  style={{ borderRadius: 2, width: "72px" }}
                  item={menu.name}
                  key={menu.key}
                >
                  <Icon type={menu.icon} />
                </Menu.Item>
              </Tooltip>
            ))}
          </Menu>
        </Sider>
        <Layout>
          <Header style={{ background: "#fff", padding: 0 }}>
            <Icon
              className="trigger"
              type={this.state.collapsed ? "menu-unfold" : "menu-fold"}
              onClick={this.toggle}
            />
          </Header>
          <Content
            style={{
              margin: "24px 16px",
              padding: 24,
              background: "#fff",
              minHeight: 280
            }}
          >
            Content
          </Content>
        </Layout>
      </Layout>
    );
  }
}

ReactDOM.render(<SiderDemo />, document.getElementById("container"));

Edit serverless-water-lnjem

最佳答案

将您的工具提示移到里面并包裹Menu.ItemIcon。我发现这是最快的方法。

menu-item-tooltip

   {sidebar.map(menu => (
              <Menu.Item
                style={{ borderRadius: 2, width: "72px" }}
                item={menu.name}
                key={menu.key}
              >
                <Tooltip
                  placement="right"
                  title={menu.name}
                  className="tooltip"
                >
                  <div className="my-icon-wrapper test">
                    <Icon type={menu.icon} />
                  </div>
                </Tooltip>
              </Menu.Item>
            ))}

CSS

.my-icon-wrapper {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
}
.test {
  border: 1px solid red;
}

关于css - Antd 在非折叠的 Sider 上将工具提示应用于 Menu.Item,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59085357/

相关文章:

javascript - 如何在 ReactJS 中从 one.js 访问 isValid 变量到 two.js?

reactjs - 使用 Formik、Yup 和 React 进行异步验证

reactjs - Antd中如何获取form.item中Upload的值?

reactjs - Ant Design - 使菜单可折叠/可折叠

reactjs - Ant-design Spinner 不工作

CSS:向背景图像添加填充

css - 如何更改 tinymce 滚动条的颜色?

javascript - 使用文本字段同时过滤 react 表和 react 传单标记(在表格中显示过滤数据,在 map 中显示标记)

javascript - 为什么我的代码使用高度 :100px, 而不是高度 :100%?

html - 事件链接的文档类型问题