reactjs - onClick 不适用于 Material-UI 工具提示中的 Popper 组件

标签 reactjs material-ui popper.js

预期行为是单击工具提示时转到另一个页面。为了实现这个功能,我为 PopperProps 提供了 onClick Prop 。目的。

下面是我的代码:

interface Props extends TooltipProps{}

const CustomTooltip : React.FC<Props> = (props) => {
  const { arrow, ...classes } = useStylesBootstrap();
  const [arrowRef, setArrowRef] = React.useState<HTMLSpanElement | null>(null);

  const handleClick = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
    event.preventDefault();
    event.stopPropagation();
    console.log("clicked");
    window.location.replace('/info/contact-us');
  };

  return (
    <Tooltip
      classes={classes}
      PopperProps={{
        style: { border: "1px red solid" },
        onClick: handleClick,
        popperOptions: {
          modifiers: {
            arrow: {
              enabled: Boolean(arrowRef),
              element: arrowRef,
            },
          },
        },
      }}
      {...props}
      title={(
        <>
          {props.title}
          <span className={arrow} ref={setArrowRef} />
        </>
        )}
    />
  );
};

最佳答案

您需要提供interactive Tooltip 的 Prop .当interactive未指定,Tooltip disables pointer events (所以点击不会做任何事情),但是 pointer-events设置为 autointeractive is true . interactive Prop 还可以防止 Tooltip当您将鼠标从触发元素移动到 Tooltip 时立即关闭.

这是一个工作示例:

import React from "react";
import DeleteIcon from "@material-ui/icons/Delete";
import IconButton from "@material-ui/core/IconButton";
import Tooltip from "@material-ui/core/Tooltip";

export default function SimpleTooltips() {
  return (
    <div>
      <Tooltip
        interactive
        title={
          <div onClick={() => console.log("clicked tooltip text")}>Delete</div>
        }
      >
        <IconButton aria-label="delete">
          <DeleteIcon />
        </IconButton>
      </Tooltip>
    </div>
  );
}

Edit Interactive Tooltip

关于reactjs - onClick 不适用于 Material-UI 工具提示中的 Popper 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61527163/

相关文章:

jquery - 如何在悬停时让 Bootstrap 弹出窗口保持事件状态?

bootstrap-4 - Webpack 安装 Bootstrap - 缺少 popper.js.map

reactjs - 为什么当底层组件重新渲染时,popper 会跳转到左上角?

javascript - material-ui CSS 的正确使用方法是什么?

css - Material UI IconButton 工具提示未正确显示

material-ui - 如何覆盖用户选择 : none in RadioButton and CheckBox control labels?

javascript - 在页面刷新时 react 路由和持久性

javascript - 将全局样式表移动到 <head> 中的样式组件之上

javascript - 移动设备悬停状态下元素的 onClick 事件仍然适用

javascript - 终极版 : update an item in an array of objects