在 Material-UI 中以编程方式打开 Tooltip

AnK*_*ing 5 reactjs material-ui

我需要能够向元素添加工具提示,使其功能正常(在元素悬停时打开),同时我需要能够以编程方式打开它。

我知道它有open允许这样做的道具,但在这种情况下,我会将组件从不受控制切换到受控制,这是不可能的。

我也无法:hover在工具提示内的按钮上总结事件,因为这在浏览器中是不可能的。

有没有办法通过参考来实现这一点?当我将 ref 与工具提示一起使用时,它只是传递给子元素。

谢谢!

Rya*_*ell 6

Tooltip被控制时,onOpenonClose函数仍然会在它在不受控制的情况下打开/关闭工具提示时触发。您可以使用这些函数来更改Tooltip.

工作示例:

import React from "react";
import ReactDOM from "react-dom";

import Tooltip from "@material-ui/core/Tooltip";
import Button from "@material-ui/core/Button";

function App() {
  const [tooltipIsOpen, setTooltipIsOpen] = React.useState(false);
  return (
    <div className="App">
      <Tooltip
        open={tooltipIsOpen}
        onOpen={() => setTooltipIsOpen(true)}
        onClose={() => setTooltipIsOpen(false)}
        title="I'm a controlled tooltip"
      >
        <span>Hover over me or click the button</span>
      </Tooltip>
      <div style={{ marginTop: 50 }}>
        <Button
          onClick={() => setTooltipIsOpen(!tooltipIsOpen)}
          variant="contained"
          color="primary"
        >
          Click me to {tooltipIsOpen ? "close" : "open"} the tooltip
        </Button>
      </div>
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
Run Code Online (Sandbox Code Playgroud)

编辑受控工具提示