【问题标题】:React: using refs in a function componentReact:在函数组件中使用 refs
【发布时间】:2020-10-23 14:41:40
【问题描述】:

我是 React 新手,我正在尝试弄清楚如何在我的函数组件中使用 Refs 来获取 div 的宽度。一些显示我的困惑的代码如下:

import React, { useRef } from "react";
import "./styles.css";

export default function App() {
  const eyes = useRef();

  function onMouseMoveFn(e) {
    const x = eyes.current.offsetX();
    const y = eyes.current.offsetY();
    console.log(x, y, eyes);
  }

  return (
    <div onMouseMove={onMouseMoveFn}>
      <div class="eyes" ref={eyes}>
        <div class="eye" />
        <div class="eye" />
      </div>
    </div>
  );
}

可以在here找到一个演示

(将鼠标悬停在沙盒浏览器中的眼睛上时,理想情况下应该会导致控制台显示一组眼睛的 x 和 y 坐标,但它会给出错误)

在 React 的文档中,它说“但是,只要您引用 DOM 元素或类组件,您就可以在函数组件中使用 ref 属性”所以我不明白为什么上面的代码没有工作。

【问题讨论】:

标签: javascript reactjs ref


【解决方案1】:

您可以使用当前元素的getBoundingClientRect函数访问偏移量,见以下代码:

eyes.current.getBoundingClientRect().x

【讨论】:

  • 另外,您的代码框有问题 - 将 class 重命名为 className 以获取 div 元素;)
猜你喜欢
  • 2020-03-11
  • 2022-01-01
  • 1970-01-01
  • 2020-01-15
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 2020-10-20
  • 2019-12-16
相关资源
最近更新 更多