reactjs - 在Material-UI中以编程方式打开工具提示

标签 reactjs material-ui

我需要能够向元素添加工具提示,以便其功能像普通的一样(当元素悬停时会打开),同时我需要能够以编程方式将其打开。

我知道它允许使用open属性,但是在这种情况下,我将组件从不受控制的状态切换到受控制的状态,这是不可能的。

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

有没有办法通过裁判来做到这一点?当我在工具提示中使用ref时,它只会传递给子元素。

谢谢!

最佳答案

当控制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);

Edit controlled Tooltip

关于reactjs - 在Material-UI中以编程方式打开工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58346266/

相关文章:

javascript - 模型助手在 React/Flux 中属于什么位置?

javascript - React JS 'propTypes' 验证器运行两次

javascript - MUI 中的 <Div>、<StyledDiv> 和 <Box sx={...}> 之间有什么区别?

reactjs - 当输入值由另一个输入字段设置时,Material-UI InputLabel 覆盖文本

javascript - 是否可以在 material-ui 的 Chip 组件上设置删除按钮的样式?

javascript - useEffect 仅运行一次,刷新后不会再次获取

reactjs - 如何在开发中禁用 Emotion 11 中的前缀?

javascript - 如何将键值对添加到状态对象 React

javascript - 我如何在 react 中映射渲染状态?

css - Material UI 文本字段 : changing background color is not working as it is supposed to