【发布时间】:2020-02-03 08:19:02
【问题描述】:
我目前正在将我的 react 组件迁移到 react 钩子,但遇到了一种特殊情况,即访问已安装的 DOM 元素。
我的组件使用React.class 结构:
import { Component } from "react";
import ReactDOM from "react-dom";
class LineGraph extends Component {
componentDidMount() {
this.element = ReactDOM.findDOMNode(this).parentNode;
}
render() {
return "";
}
}
现在使用 react hooks,ReactDOM.findDOMNode(this) 抛出以下错误:
TypeError: react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.findDOMNode(...) 为空
查看 ReactDOM#findDOMNode 文档,我尝试在返回的空 div 上使用引用,但在几个绘制元素变量之后变为 null。
import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";
export default function LineGraph () {
let myRef = React.createRef();
useEffect(() => {
element = ReactDOM.findDOMNode(myRef.current).parentNode;
}, []);
return (
<div ref={myRef}></div>
);
}
我正在寻找一种干净的方式来访问注入/安装我的反应代码的 DOM 元素。
就上下文而言,我的目标是使用 d3 库注入 svg 内容,我的代码可以很好地与组件配合使用。
【问题讨论】:
标签: reactjs react-hooks react-dom react-component