Commit 388d804e authored by jim's avatar jim

Maybe useful performance optimization

parent 62e77dea
...@@ -26,17 +26,26 @@ export default class ActiveChart extends Component { ...@@ -26,17 +26,26 @@ export default class ActiveChart extends Component {
}; };
componentDidMount() { componentDidMount() {
this.timer = setInterval(() => { this.loopData();
this.setState({
activeData: getActiveData(),
});
}, 1000);
} }
componentWillUnmount() { componentWillUnmount() {
clearInterval(this.timer); clearTimeout(this.timer);
} }
loopData = () => {
this.timer = setTimeout(() => {
this.setState(
{
activeData: getActiveData(),
},
() => {
requestAnimationFrame(() => {
this.loopData();
});
}
);
}, 1000);
};
render() { render() {
const { activeData = [] } = this.state; const { activeData = [] } = this.state;
......
...@@ -25,25 +25,27 @@ class Bar extends Component { ...@@ -25,25 +25,27 @@ class Bar extends Component {
if (!this.node) { if (!this.node) {
return; return;
} }
const canvasWidth = this.node.parentNode.clientWidth; requestAnimationFrame(() => {
const { data = [], autoLabel = true } = this.props; const canvasWidth = this.node.parentNode.clientWidth;
if (!autoLabel) { const { data = [], autoLabel = true } = this.props;
return; if (!autoLabel) {
} return;
const minWidth = data.length * 30; }
const { autoHideXLabels } = this.state; const minWidth = data.length * 30;
const { autoHideXLabels } = this.state;
if (canvasWidth <= minWidth) { if (canvasWidth <= minWidth) {
if (!autoHideXLabels) { if (!autoHideXLabels) {
this.setState({
autoHideXLabels: true,
});
}
} else if (autoHideXLabels) {
this.setState({ this.setState({
autoHideXLabels: true, autoHideXLabels: false,
}); });
} }
} else if (autoHideXLabels) { });
this.setState({
autoHideXLabels: false,
});
}
} }
handleRoot = n => { handleRoot = n => {
......
...@@ -19,8 +19,6 @@ export default class Pie extends Component { ...@@ -19,8 +19,6 @@ export default class Pie extends Component {
}; };
componentDidMount() { componentDidMount() {
this.getLegendData();
this.resize();
window.addEventListener('resize', this.resize); window.addEventListener('resize', this.resize);
} }
...@@ -46,12 +44,17 @@ export default class Pie extends Component { ...@@ -46,12 +44,17 @@ export default class Pie extends Component {
getG2Instance = chart => { getG2Instance = chart => {
this.chart = chart; this.chart = chart;
requestAnimationFrame(() => {
this.getLegendData();
this.resize();
});
}; };
// for custom lengend view // for custom lengend view
getLegendData = () => { getLegendData = () => {
if (!this.chart) return; if (!this.chart) return;
const geom = this.chart.getAllGeoms()[0]; // θŽ·ε–ζ‰€ζœ‰ηš„ε›Ύε½’ const geom = this.chart.getAllGeoms()[0]; // θŽ·ε–ζ‰€ζœ‰ηš„ε›Ύε½’
if (!geom) return;
const items = geom.get('dataArray') || []; // θŽ·ε–ε›Ύε½’ε―ΉεΊ”ηš„ const items = geom.get('dataArray') || []; // θŽ·ε–ε›Ύε½’ε―ΉεΊ”ηš„
const legendData = items.map(item => { const legendData = items.map(item => {
...@@ -71,22 +74,24 @@ export default class Pie extends Component { ...@@ -71,22 +74,24 @@ export default class Pie extends Component {
@Bind() @Bind()
@Debounce(300) @Debounce(300)
resize() { resize() {
const { hasLegend } = this.props; requestAnimationFrame(() => {
if (!hasLegend || !this.root) { const { hasLegend } = this.props;
window.removeEventListener('resize', this.resize); if (!hasLegend || !this.root) {
return; window.removeEventListener('resize', this.resize);
} return;
if (this.root.parentNode.clientWidth <= 380) { }
if (!this.state.legendBlock) { if (this.root.parentNode.clientWidth <= 380) {
if (!this.state.legendBlock) {
this.setState({
legendBlock: true,
});
}
} else if (this.state.legendBlock) {
this.setState({ this.setState({
legendBlock: true, legendBlock: false,
}); });
} }
} else if (this.state.legendBlock) { });
this.setState({
legendBlock: false,
});
}
} }
handleRoot = n => { handleRoot = n => {
......
...@@ -12,7 +12,9 @@ export default class Radar extends Component { ...@@ -12,7 +12,9 @@ export default class Radar extends Component {
}; };
componentDidMount() { componentDidMount() {
this.getLengendData(); requestAnimationFrame(() => {
this.getLengendData();
});
} }
componentWillReceiveProps(nextProps) { componentWillReceiveProps(nextProps) {
......
...@@ -19,8 +19,10 @@ class TagCloud extends Component { ...@@ -19,8 +19,10 @@ class TagCloud extends Component {
}; };
componentDidMount() { componentDidMount() {
this.initTagCloud(); requestAnimationFrame(() => {
this.renderChart(); this.initTagCloud();
this.renderChart();
});
window.addEventListener('resize', this.resize); window.addEventListener('resize', this.resize);
} }
...@@ -36,7 +38,9 @@ class TagCloud extends Component { ...@@ -36,7 +38,9 @@ class TagCloud extends Component {
} }
resize = () => { resize = () => {
this.renderChart(); requestAnimationFrame(() => {
this.renderChart();
});
}; };
saveRootRef = node => { saveRootRef = node => {
......
...@@ -13,9 +13,10 @@ export default class WaterWave extends PureComponent { ...@@ -13,9 +13,10 @@ export default class WaterWave extends PureComponent {
}; };
componentDidMount() { componentDidMount() {
this.renderChart(); requestAnimationFrame(() => {
this.resize(); this.renderChart();
this.resize();
});
window.addEventListener('resize', this.resize); window.addEventListener('resize', this.resize);
} }
...@@ -28,10 +29,12 @@ export default class WaterWave extends PureComponent { ...@@ -28,10 +29,12 @@ export default class WaterWave extends PureComponent {
} }
resize = () => { resize = () => {
const { height } = this.props; requestAnimationFrame(() => {
const { offsetWidth } = this.root.parentNode; const { height } = this.props;
this.setState({ const { offsetWidth } = this.root.parentNode;
radio: offsetWidth < height ? offsetWidth / height : 1, this.setState({
radio: offsetWidth < height ? offsetWidth / height : 1,
});
}); });
}; };
......
...@@ -52,16 +52,18 @@ export default class Info extends Component { ...@@ -52,16 +52,18 @@ export default class Info extends Component {
if (!this.main) { if (!this.main) {
return; return;
} }
let mode = 'inline'; requestAnimationFrame(() => {
const { offsetWidth } = this.main; let mode = 'inline';
if (this.main.offsetWidth < 641 && offsetWidth > 400) { const { offsetWidth } = this.main;
mode = 'horizontal'; if (this.main.offsetWidth < 641 && offsetWidth > 400) {
} mode = 'horizontal';
if (window.innerWidth < 768 && offsetWidth > 400) { }
mode = 'horizontal'; if (window.innerWidth < 768 && offsetWidth > 400) {
} mode = 'horizontal';
this.setState({ }
mode, this.setState({
mode,
});
}); });
}; };
render() { render() {
......
...@@ -68,11 +68,13 @@ class AdvancedForm extends PureComponent { ...@@ -68,11 +68,13 @@ class AdvancedForm extends PureComponent {
window.removeEventListener('resize', this.resizeFooterToolbar); window.removeEventListener('resize', this.resizeFooterToolbar);
} }
resizeFooterToolbar = () => { resizeFooterToolbar = () => {
const sider = document.querySelectorAll('.ant-layout-sider')[0]; requestAnimationFrame(() => {
const width = `calc(100% - ${sider.style.width})`; const sider = document.querySelectorAll('.ant-layout-sider')[0];
if (this.state.width !== width) { const width = `calc(100% - ${sider.style.width})`;
this.setState({ width }); if (this.state.width !== width) {
} this.setState({ width });
}
});
}; };
render() { render() {
const { form, dispatch, submitting } = this.props; const { form, dispatch, submitting } = this.props;
......
...@@ -212,17 +212,19 @@ export default class AdvancedProfile extends Component { ...@@ -212,17 +212,19 @@ export default class AdvancedProfile extends Component {
@Bind() @Bind()
@Debounce(200) @Debounce(200)
setStepDirection() { setStepDirection() {
const { stepDirection } = this.state; requestAnimationFrame(() => {
const w = getWindowWidth(); const { stepDirection } = this.state;
if (stepDirection !== 'vertical' && w <= 576) { const w = getWindowWidth();
this.setState({ if (stepDirection !== 'vertical' && w <= 576) {
stepDirection: 'vertical', this.setState({
}); stepDirection: 'vertical',
} else if (stepDirection !== 'horizontal' && w > 576) { });
this.setState({ } else if (stepDirection !== 'horizontal' && w > 576) {
stepDirection: 'horizontal', this.setState({
}); stepDirection: 'horizontal',
} });
}
});
} }
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