Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用react钩子将document.querySelector转换为用户_Javascript_Reactjs_React Hooks - Fatal编程技术网

Javascript 如何使用react钩子将document.querySelector转换为用户

Javascript 如何使用react钩子将document.querySelector转换为用户,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,如何将querySelector获取的元素转换为使用react钩子添加带有ref document.querySelector的div import ReactDOM from "react-dom"; import h337 from "heatmap.js"; import "./styles.css"; function App() { useEffect(() =>

如何将querySelector获取的元素转换为使用react钩子添加带有ref document.querySelector的div

import ReactDOM from "react-dom";
    import h337 from "heatmap.js";
    import "./styles.css";
    
    function App() {
    
      useEffect(() => {
        var heatmapInstance = h337.create({
          // only container is required, the rest will be defaults
          container: document.querySelector('.App')
        });
        // now generate some random data
        var points = [];
        var max = 0;
        var width = 840;
        var height = 400;
        var len = 200;
    
        while (len--) {
         var val = Math.floor(Math.random()*100);
         max = Math.max(max, val);
         var point = {
          x: Math.floor(Math.random()*width),
          y: Math.floor(Math.random()*height),
          value: val
         };
         points.push(point);
       }
       // heatmap data format
      var data = {
        max: max,
        data: points
      };
      // if you have a set of datapoints always use setData instead of addData
      // for data initialization
      heatmapInstance.setData(data);
     })
    
    
    
      return (
        <div className="App">
          <h1>Hello CodeSandbox</h1>
          <h2>Start editing to see some magic happen!</h2>
        </div>
      );
    }
    
    const rootElement = document.getElementById("root");
    ReactDOM.render(<App />, rootElement);
const appRef = React.useRef();

...

<div className="App" ref={appRef}>
从“react-dom”导入ReactDOM;
从“heatmap.js”导入h337;
导入“/styles.css”;
函数App(){
useffect(()=>{
var heatmapInstance=h337.create({
//仅需要容器,其余为默认值
容器:document.querySelector(“.App”)
});
//现在生成一些随机数据
var点=[];
var max=0;
var宽度=840;
var高度=400;
var-len=200;
而(len--){
var val=Math.floor(Math.random()*100);
max=Math.max(max,val);
变量点={
x:Math.floor(Math.random()*宽度),
y:Math.floor(Math.random()*高度),
值:val
};
点。推(点);
}
//热图数据格式
风险值数据={
马克斯:马克斯,
数据:点数
};
//如果您有一组数据点,请始终使用setData而不是addData
//用于数据初始化
heatmaInstance.setData(数据);
})
返回(
你好,代码沙盒
开始编辑,看看神奇的发生!
);
}
const rootElement=document.getElementById(“根”);
render(,rootElement);
如何将querySelector获取的元素转换为使用react钩子添加带有ref document.querySelector的div

import ReactDOM from "react-dom";
    import h337 from "heatmap.js";
    import "./styles.css";
    
    function App() {
    
      useEffect(() => {
        var heatmapInstance = h337.create({
          // only container is required, the rest will be defaults
          container: document.querySelector('.App')
        });
        // now generate some random data
        var points = [];
        var max = 0;
        var width = 840;
        var height = 400;
        var len = 200;
    
        while (len--) {
         var val = Math.floor(Math.random()*100);
         max = Math.max(max, val);
         var point = {
          x: Math.floor(Math.random()*width),
          y: Math.floor(Math.random()*height),
          value: val
         };
         points.push(point);
       }
       // heatmap data format
      var data = {
        max: max,
        data: points
      };
      // if you have a set of datapoints always use setData instead of addData
      // for data initialization
      heatmapInstance.setData(data);
     })
    
    
    
      return (
        <div className="App">
          <h1>Hello CodeSandbox</h1>
          <h2>Start editing to see some magic happen!</h2>
        </div>
      );
    }
    
    const rootElement = document.getElementById("root");
    ReactDOM.render(<App />, rootElement);
const appRef = React.useRef();

...

<div className="App" ref={appRef}>
您尝试访问应用程序时,应用程序渲染速度会更快。您需要对
useffect
hook添加一些小的调整:

useEffect(() => {
  if(appRef.current) {
    ...your code here
  }
}, [appRef])

在这种情况下,您的代码只能在DOM元素装入后运行。

我尝试使用useRef当前属性未定义您需要像这样使用它:
useffect(()=>{…您的代码在这里},[])
其中
[]
是一个依赖项数组,在您的情况下它应该是空的。是否需要更改容器:document.querySelector('.App'))参考??获取错误目标容器不是DOM元素。在Object.render(react dom.development.js?61bb:24828)