参考svg <path>没有&#34; getTotalLength()&#34; -Method

时间:2017-09-14 17:52:58

标签: reactjs dom svg

我想创建一个像这样渲染SVG路径元素的组件:

class Path extends Component {
  constructor(props) {
    super(props);

    this.refCallback = this.refCallback.bind(this);
  }

  refCallback(element) {
    console.log("Element: ", element, element.getTotalLength());
  }

  render() {
    const { data, id } = this.props

    return (
      <path d={ data } id={ id } ref={ this.refCallback } />
    );
  }
}

我希望获得路径的DOM节点,然后使用&#34; getTotalLength()&#34;方法就可以了。但是我在控制台中获得了路径元素的以下输出:

Element: <path d="M11.859375,0.88671875 C9.10229798,32.1448978 3.72401281,62.1847019 0.921875,92.3632812" id="Path"></path>

对于&#34; element.getTotalLength()&#34;这样:

Uncaught TypeError: element.getTotalLength is not a function

我不知道为什么它会像这样。我希望得到DOM元素并使用&#34; getTotalLength()&#34;。

有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:1)

没有svg的路径确实支持getTotalLength()函数。

它有效

<svg>
   <path d={ data } id={ id } ref={ this.refCallback } />
 </svg>

答案 1 :(得分:0)

您缺少svg标记,您可以先分配组件的参考,然后使用DOM方法。

您可以尝试这样的事情

class App extends Component {
  componentDidMount() {
    console.log(this.pathref.getTotalLength());
  }
  render() {
    const { data, id } = this.props
    return(
      <svg>
        <path ref={(ref) => { this.pathref = ref; }} d={ data } id={ id }></path>
      </svg>
    )
  }
}