Javascript 如何使用react钩子将document.querySelector转换为用户
如何将querySelector获取的元素转换为使用react钩子添加带有ref document.querySelector的divJavascript 如何使用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(() =>
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)