3

我正在尝试useRef()在 NextJs 项目中的函数组件主体内使用钩子,但仍然出现以下错误。我已经浏览了 React Hook 规则,但我找不到这个错误的原因,这不起作用。有人有想法吗?

错误:无效的挂钩调用。钩子只能在函数组件的主体内部调用。这可能由于以下原因之一而发生:

import  React, { useRef } from 'react';

export default function Diagram() {

  const svgRef = useRef();

  return (
      <>
        <div className="container-svg py-4">
        <svg  ref={svgRef} viewBox="0 0 300 300">
        <g transform="translate(150, 150)">
          <g>
            <path id="triangle" d="M0, -125 L-150,150 L150, 150 L0, -125 M 0,50 L-150, 150 M150, 150 L0,50  L0,-125" stroke="black" fill="none"/>
          </g>
            {
              posts.map( post => {
                return (
                  <circle key={post.id} className="circle" cx={post.point.x} cy={post.point.y} r="5" />
                )
              })
            }
            <circle className="circle" cx="0" cy="0" r="5" />
          </g>
        </svg>
      </div>
      </>
  )
}
4

1 回答 1

1

我正在使用next 10.1.3并且react 17.0.1我使用React.createRef()是因为useRef()没有工作。我根据最初提出的问题做了一个例子。我添加这个是因为评论中的 createRef 答案不完整,这很容易理解。

import  React from 'react';

export default function Diagram() {

  const svgRef = React.createRef();

  return (
      <>
        <div className="container-svg py-4">
        <svg  ref={svgRef} viewBox="0 0 300 300">

...
于 2021-08-07T22:55:10.530 回答