使用react得到错误 this.node(...) is null ?

IT技术 javascript reactjs
2021-05-10 02:02:13

我正在尝试在react.

看到 vanila javscript 演示工作正常 https://codesandbox.io/s/vigorous-satoshi-s5dzs

但我试图实现同样的事情,react但得到error this.node(...) 为空

这是我的代码

https://codesandbox.io/s/practical-driscoll-5cvmm

return (
    <div className="App">
      <div id="graph" />
      {d3
        .select("#graph")
        .graphviz()
        .renderDot(visualize(fsm))}
    </div>
  );
1个回答

您需要html元素 for d3.select、 youserefsuseEffect在安装组件后选择元素:工作沙盒

function App() {
  var fsm = new StateMachine({
    init: "open",
    transitions: [
      { name: "clodsdse", from: "open", to: "closed" },
      { name: "open", from: "closed", to: "open" },
      { name: "openss", from: "closed", to: "open" },
      { name: "ss", from: "a", to: "b" }
    ]
  });

  var elem = null;

  useEffect(() => {
    d3.select(elem)
      .graphviz()
      .renderDot(visualize(fsm));
  }, [fsm, elem]);

  return (
    <div className="App">
      <div id="graph" ref={e => elem = e}/>
    </div>
  );
}