Fra*_*vid 4 javascript reactjs react-hooks
我想在图表数据值发生变化时删除旧的 SVG 并创建一个新的 SVG。
import React, {useRef, useEffect, useState} from 'react'
import * as d3 from 'd3'
import { useSelector} from "react-redux";
const Barchart = () =>{
const chart = useRef(null);
const chart_data= useSelector(state => state.ChartReducer);
useEffect(() => {
let svg = d3.select(chart.current)
//code to create the chart
//
return () => {
//How to remove the old svg element from the ref chart.current?
//I tried
chart.current.removeChild() // This throws an error saying expects 1 argument got 0
}
},[chart_data])
return(
<div className="bar-chart" ref={chart}></div>
)
}
export default Barchart
Run Code Online (Sandbox Code Playgroud)
chart.current.removeChild()并没有删除 的孩子<div className="bar-chart" ref={chart}></div>
如何删除具有useRef引用的div的所有子元素?
您应该在方法中指示子元素removeChild()。
chart.current.removeChild(chart.current.children[0])
Run Code Online (Sandbox Code Playgroud)
Node.removeChild()要求将子节点作为参数删除。如果要删除所有子元素,可以使用Element.innerHTML:
chart.current.innerHTML = "";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17695 次 |
| 最近记录: |