Commit 558da10f authored by nikogu's avatar nikogu

优化图表清理的代码

parent aa833043
...@@ -22,13 +22,17 @@ export default class ActiveChart extends PureComponent { ...@@ -22,13 +22,17 @@ export default class ActiveChart extends PureComponent {
} }
componentDidMount() { componentDidMount() {
setInterval(() => { this.timer = setInterval(() => {
this.setState({ this.setState({
activeData: getActiveData(), activeData: getActiveData(),
}); });
}, 1000); }, 1000);
} }
componentWillUnmount() {
clearInterval(this.timer);
}
render() { render() {
const { activeData = [] } = this.state; const { activeData = [] } = this.state;
......
...@@ -14,6 +14,12 @@ class Bar extends PureComponent { ...@@ -14,6 +14,12 @@ class Bar extends PureComponent {
} }
} }
componentWillUnmount() {
if (this.chart) {
this.chart.destroy();
}
}
handleRef = (n) => { handleRef = (n) => {
this.node = n; this.node = n;
} }
...@@ -68,6 +74,8 @@ class Bar extends PureComponent { ...@@ -68,6 +74,8 @@ class Bar extends PureComponent {
}); });
chart.interval().position('x*y').color(color); chart.interval().position('x*y').color(color);
chart.render(); chart.render();
this.chart = chart;
} }
render() { render() {
......
...@@ -16,6 +16,12 @@ class Gauge extends PureComponent { ...@@ -16,6 +16,12 @@ class Gauge extends PureComponent {
} }
} }
componentWillUnmount() {
if (this.chart) {
this.chart.destroy();
}
}
handleRef = (n) => { handleRef = (n) => {
this.node = n; this.node = n;
} }
......
...@@ -14,6 +14,12 @@ class MiniArea extends PureComponent { ...@@ -14,6 +14,12 @@ class MiniArea extends PureComponent {
} }
} }
componentWillUnmount() {
if (this.chart) {
this.chart.destroy();
}
}
handleRef = (n) => { handleRef = (n) => {
this.node = n; this.node = n;
} }
...@@ -79,6 +85,8 @@ class MiniArea extends PureComponent { ...@@ -79,6 +85,8 @@ class MiniArea extends PureComponent {
chart.line().position('x*y').color(color).shape('smooth'); chart.line().position('x*y').color(color).shape('smooth');
} }
chart.render(); chart.render();
this.chart = chart;
} }
render() { render() {
......
...@@ -14,6 +14,12 @@ class MiniBar extends PureComponent { ...@@ -14,6 +14,12 @@ class MiniBar extends PureComponent {
} }
} }
componentWillUnmount() {
if (this.chart) {
this.chart.destroy();
}
}
handleRef = (n) => { handleRef = (n) => {
this.node = n; this.node = n;
} }
...@@ -61,6 +67,8 @@ class MiniBar extends PureComponent { ...@@ -61,6 +67,8 @@ class MiniBar extends PureComponent {
}); });
chart.interval().position('x*y').color(color); chart.interval().position('x*y').color(color);
chart.render(); chart.render();
this.chart = chart;
} }
render() { render() {
......
...@@ -20,6 +20,12 @@ class Pie extends Component { ...@@ -20,6 +20,12 @@ class Pie extends Component {
} }
} }
componentWillUnmount() {
if (this.chart) {
this.chart.destroy();
}
}
handleRef = (n) => { handleRef = (n) => {
this.node = n; this.node = n;
} }
......
...@@ -20,6 +20,12 @@ class Radar extends PureComponent { ...@@ -20,6 +20,12 @@ class Radar extends PureComponent {
} }
} }
componentWillUnmount() {
if (this.chart) {
this.chart.destroy();
}
}
handleRef = (n) => { handleRef = (n) => {
this.node = n; this.node = n;
} }
......
...@@ -16,12 +16,18 @@ class WaterWave extends PureComponent { ...@@ -16,12 +16,18 @@ class WaterWave extends PureComponent {
this.renderChart(); this.renderChart();
this.resize(); this.resize();
window.addEventListener('resize', () => { window.addEventListener('resize', this.resize);
this.resize();
});
} }
resize() { componentWillUnmount() {
cancelAnimationFrame(this.timer);
if (this.node) {
this.node.innerHTML = '';
}
window.removeEventListener('resize', this.resize);
}
resize = () => {
const { height } = this.props; const { height } = this.props;
const realWidth = this.root.parentNode.offsetWidth; const realWidth = this.root.parentNode.offsetWidth;
if (realWidth < this.props.height) { if (realWidth < this.props.height) {
...@@ -39,6 +45,7 @@ class WaterWave extends PureComponent { ...@@ -39,6 +45,7 @@ class WaterWave extends PureComponent {
renderChart() { renderChart() {
const { percent, color = '#19AFFA' } = this.props; const { percent, color = '#19AFFA' } = this.props;
const data = percent / 100; const data = percent / 100;
const self = this;
if (!this.node || !data) { if (!this.node || !data) {
return; return;
...@@ -163,7 +170,7 @@ class WaterWave extends PureComponent { ...@@ -163,7 +170,7 @@ class WaterWave extends PureComponent {
sp += 0.07; sp += 0.07;
drawSin(); drawSin();
} }
requestAnimationFrame(render); self.timer = requestAnimationFrame(render);
} }
render(); render();
......
...@@ -14,6 +14,15 @@ class TimelineChart extends Component { ...@@ -14,6 +14,15 @@ class TimelineChart extends Component {
} }
} }
componentWillUnmount() {
if (this.chart) {
this.chart.destroy();
}
if (this.slider) {
this.slider.destroy();
}
}
sliderId = `timeline-chart-slider-${Math.random() * 1000}` sliderId = `timeline-chart-slider-${Math.random() * 1000}`
handleRef = (n) => { handleRef = (n) => {
...@@ -75,6 +84,8 @@ class TimelineChart extends Component { ...@@ -75,6 +84,8 @@ class TimelineChart extends Component {
chart.line().position('x*y1').color('#4FAAEB'); chart.line().position('x*y1').color('#4FAAEB');
chart.line().position('x*y2').color('#9AD681'); chart.line().position('x*y2').color('#9AD681');
this.chart = chart;
/* eslint new-cap:0 */ /* eslint new-cap:0 */
const slider = new Slider({ const slider = new Slider({
domId: this.sliderId, domId: this.sliderId,
...@@ -84,6 +95,8 @@ class TimelineChart extends Component { ...@@ -84,6 +95,8 @@ class TimelineChart extends Component {
charts: [chart], charts: [chart],
}); });
slider.render(); slider.render();
this.slider = slider;
} }
render() { render() {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment