簡體   English   中英

在 React 中創建懸停工具提示

[英]Creating a tooltip on hover in React

我制作了一個工具提示,當我將鼠標懸停在一個元素上時會出現該提示,並顯示產品的全名productName

<div
  className="product-select-info"
  onMouseEnter={e => productNameHandleHover(e)}
  onMouseLeave={productNameHandleNoHover}
>
  {productName}
  <div
    className="tooltip"
    style={{
      display: isTooltipShown ? "block" : "none",
      top: mouseLocation.y,
      left: mouseLocation.x,
    }}
  >
    {productName}
  </div>
</div>

這是我的處理程序:

const productNameHandleHover = (event: any): void => {
  setmouseLocation({
    x: event.pageX,
    y: event.pageY,
  });
  setisTooltipShown(true);
};

const productNameHandleNoHover = (): void => {
  setisTooltipShown(false);
};

我的問題是,我只想在 0.5 秒后顯示工具提示。 目前,只要鼠標移過 div 就會出現工具提示。 我如何實現這一目標? 我嘗試使用setTimeout但我只是遇到了問題。

正如 ritaj 在評論中提到的那樣,最好使用 css 轉換。

但是,如果您絕對想要 javascript 實現,則每當您將鼠標懸停在元素上時,請將類變量設置為 true。

const productNameHandleHover = (event: any): void => {
  this.hovering = true;
  ...
}

並在沒有時將其設置為 false。

const productNameHandleNoHover = (): void => {
  this.hovering = false;
  setisTooltipShown(false);
};

當您實際設置工具提示時,請檢查您的類變量是否已設置。

const productNameHandleHover = (event: any): void => {
  this.hovering = true;
  setmouseLocation({
    x: event.pageX,
    y: event.pageY,
  });
  setTimeout(() => {
    if (this.hovering) {
      setisTooltipShown(true);
    }
  }, 500)
};

是一個代碼沙盒,可以滿足您的需求。

但是你已經可以看到你必須付出的努力。所以回到原點。 使用 css 過渡是更好的選擇

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM