Skip to content

Commit fefbeed

Browse files
committed
Avoids redundant setState & bindZoomListener calls
1 parent 9e0b776 commit fefbeed

File tree

4 files changed

+12
-5
lines changed

4 files changed

+12
-5
lines changed

package-lock.json

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
"dependencies": {
4343
"clone": "^2.1.1",
4444
"d3": "3.5.17",
45+
"deep-equal": "^1.0.1",
4546
"react-transition-group": "^1.1.3",
4647
"uuid": "^3.0.1"
4748
},

src/Tree/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { PropTypes } from 'react';
22
import { TransitionGroup } from 'react-transition-group';
33
import { layout, select, behavior, event } from 'd3';
44
import clone from 'clone';
5+
import deepEqual from 'deep-equal';
56
import uuid from 'uuid';
67

78
import Node from '../Node';
@@ -31,16 +32,15 @@ export default class Tree extends React.Component {
3132

3233
componentWillReceiveProps(nextProps) {
3334
// Clone new data & assign internal properties
34-
if (this.props.data !== nextProps.data) {
35+
if (!deepEqual(this.props.data, nextProps.data)) {
3536
this.setState({
3637
data: this.assignInternalProperties(clone(nextProps.data)),
3738
});
3839
}
3940

4041
// If zoom-specific props change -> rebind listener with new values
41-
if (this.props.translate !== nextProps.translate ||
42-
this.props.scaleExtent !== nextProps.scaleExtent) {
43-
console.log(nextProps.translate, nextProps.scaleExtent);
42+
if (!deepEqual(this.props.translate, nextProps.translate)
43+
|| !deepEqual(this.props.scaleExtent, nextProps.scaleExtent)) {
4444
this.bindZoomListener(nextProps);
4545
}
4646
}

webpack.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ const config = {
3434
'react',
3535
'react-transition-group',
3636
'uuid',
37+
'deep-equal',
3738
],
3839
module: {
3940
rules: [

0 commit comments

Comments
 (0)