Zoomable Sunburst d3 chart with react

I have just started the d3 zoomable chart with react.
chart.js

constructor(props) {

    super(props);

    this.state = { dataSunburst: dataSunburst };

  }

  onSelect = (event) => {

    this.setState({ dataSunburst: event.data });

  }

  // randomizeData() {

  //   this.setState({ data: randomDataSet() });

  // }

  render() {

    return (

      <>

      {/* <LineChart data={dataLine} width={width} height={height} /> */}

      <Sunburst 

        data={this.state.dataSunburst}

        scale="linear"

        tooltip={true}

        tooltipPosition="right"

        keyId="anagraph"

        width={width}

        height={height}

        onSelect={this.onSelect}

        tooltipContent={ <span class="sunburstTooltip" style="position:absolute; color:'black'; z-index:10; background: #e2e2e2; padding: 5px; text-align: center;" /> }
      />
    </>
    )
  }

data.js

  "name": "flare",
  "children": [
   {
    "name": "analytics",
    "children": [
     {
      "name": "cluster",
      "children": [
       {"name": "AgglomerativeCluster", "size": 3938},
       {"name": "CommunityStructure", "size": 3812},
       {"name": "HierarchicalCluster", "size": 6714},
       {"name": "MergeEdge", "size": 743}
      ]
     },
     {
      "name": "graph",
      "children": [
       {"name": "BetweennessCentrality", "size": 3534},
       {"name": "LinkDistance", "size": 5731},
       {"name": "MaxFlowMinCut", "size": 7840},
       {"name": "ShortestPaths", "size": 5914},
       {"name": "SpanningTree", "size": 3416}
      ]
     },
     {
      "name": "optimization",
      "children": [
       {"name": "AspectRatioBanker", "size": 7074}
      ]
     }
    ]
   },
   {
    "name": "animate",
    "children": [
     {"name": "Easing", "size": 17010},
     {"name": "FunctionSequence", "size": 5842},
     {
      "name": "interpolate",
      "children": [
       {"name": "ArrayInterpolator", "size": 1983},
       {"name": "ColorInterpolator", "size": 2047},
       {"name": "DateInterpolator", "size": 1375},
       {"name": "Interpolator", "size": 8746},
       {"name": "MatrixInterpolator", "size": 2202},
       {"name": "NumberInterpolator", "size": 1382},
       {"name": "ObjectInterpolator", "size": 1629},
       {"name": "PointInterpolator", "size": 1675},
       {"name": "RectangleInterpolator", "size": 2042}
      ]
     },
     {"name": "ISchedulable", "size": 1041},
     {"name": "Parallel", "size": 5176},
     {"name": "Pause", "size": 449},
     {"name": "Scheduler", "size": 5593},
     {"name": "Sequence", "size": 5534},
     {"name": "Transition", "size": 9201},
     {"name": "Transitioner", "size": 19975},
     {"name": "TransitionEvent", "size": 1116},
     {"name": "Tween", "size": 6006}
    ]
   },
   {
    "name": "data",
    "children": [
     {
      "name": "converters",
      "children": [
       {"name": "Converters", "size": 721},
       {"name": "DelimitedTextConverter", "size": 4294},
       {"name": "GraphMLConverter", "size": 9800},
       {"name": "IDataConverter", "size": 1314},
       {"name": "JSONConverter", "size": 2220}
      ]
     },
     {"name": "DataField", "size": 1759},
     {"name": "DataSchema", "size": 2165},
     {"name": "DataSet", "size": 586},
     {"name": "DataSource", "size": 3331},
     {"name": "DataTable", "size": 772},
     {"name": "DataUtil", "size": 3322}
    ]
   },
   {
    "name": "display",
    "children": [
     {"name": "DirtySprite", "size": 8833},
     {"name": "LineSprite", "size": 1732},
     {"name": "RectSprite", "size": 3623},
     {"name": "TextSprite", "size": 10066}
    ]
   },
   {
    "name": "flex",
    "children": [
     {"name": "FlareVis", "size": 4116}
    ]
   },
   {
    "name": "physics",
    "children": [
     {"name": "DragForce", "size": 1082},
     {"name": "GravityForce", "size": 1336},
     {"name": "IForce", "size": 319},
     {"name": "NBodyForce", "size": 10498},
     {"name": "Particle", "size": 2822},
     {"name": "Simulation", "size": 9983},
     {"name": "Spring", "size": 2213},
     {"name": "SpringForce", "size": 1681}
    ]
   },
   {
    "name": "query",
    "children": [
     {"name": "AggregateExpression", "size": 1616},
     {"name": "And", "size": 1027},
     {"name": "Arithmetic", "size": 3891},
     {"name": "Average", "size": 891},
     {"name": "BinaryExpression", "size": 2893},
     {"name": "Comparison", "size": 5103},
     {"name": "CompositeExpression", "size": 3677},
     {"name": "Count", "size": 781},
     {"name": "DateUtil", "size": 4141},
     {"name": "Distinct", "size": 933},
     {"name": "Expression", "size": 5130},
     {"name": "ExpressionIterator", "size": 3617},
     {"name": "Fn", "size": 3240},
     {"name": "If", "size": 2732},
     {"name": "IsA", "size": 2039},
     {"name": "Literal", "size": 1214},
     {"name": "Match", "size": 3748},
     {"name": "Maximum", "size": 843},
     {
      "name": "methods",
      "children": [
       {"name": "add", "size": 593},
       {"name": "and", "size": 330},
       {"name": "average", "size": 287},
       {"name": "count", "size": 277},
       {"name": "distinct", "size": 292},
       {"name": "div", "size": 595},
       {"name": "eq", "size": 594},
       {"name": "fn", "size": 460},
       {"name": "gt", "size": 603},
       {"name": "gte", "size": 625},
       {"name": "iff", "size": 748},
       {"name": "isa", "size": 461},
       {"name": "lt", "size": 597},
       {"name": "lte", "size": 619},
       {"name": "max", "size": 283},
       {"name": "min", "size": 283},
       {"name": "mod", "size": 591},
       {"name": "mul", "size": 603},
       {"name": "neq", "size": 599},
       {"name": "not", "size": 386},
       {"name": "or", "size": 323},
       {"name": "orderby", "size": 307},
       {"name": "range", "size": 772},
       {"name": "select", "size": 296},
       {"name": "stddev", "size": 363},
       {"name": "sub", "size": 600},
       {"name": "sum", "size": 280},
       {"name": "update", "size": 307},
       {"name": "variance", "size": 335},
       {"name": "where", "size": 299},
       {"name": "xor", "size": 354},
       {"name": "_", "size": 264}
      ]
     },
     {"name": "Minimum", "size": 843},
     {"name": "Not", "size": 1554},
     {"name": "Or", "size": 970},
     {"name": "Query", "size": 13896},
     {"name": "Range", "size": 1594},
     {"name": "StringUtil", "size": 4130},
     {"name": "Sum", "size": 791},
     {"name": "Variable", "size": 1124},
     {"name": "Variance", "size": 1876},
     {"name": "Xor", "size": 1101}
    ]
   },
   {
    "name": "scale",
    "children": [
     {"name": "IScaleMap", "size": 2105},
     {"name": "LinearScale", "size": 1316},
     {"name": "LogScale", "size": 3151},
     {"name": "OrdinalScale", "size": 3770},
     {"name": "QuantileScale", "size": 2435},
     {"name": "QuantitativeScale", "size": 4839},
     {"name": "RootScale", "size": 1756},
     {"name": "Scale", "size": 4268},
     {"name": "ScaleType", "size": 1821},
     {"name": "TimeScale", "size": 5833}
    ]
   },
   {
    "name": "util",
    "children": [
     {"name": "Arrays", "size": 8258},
     {"name": "Colors", "size": 10001},
     {"name": "Dates", "size": 8217},
     {"name": "Displays", "size": 12555},
     {"name": "Filter", "size": 2324},
     {"name": "Geometry", "size": 10993},
     {
      "name": "heap",
      "children": [
       {"name": "FibonacciHeap", "size": 9354},
       {"name": "HeapNode", "size": 1233}
      ]
     },
     {"name": "IEvaluable", "size": 335},
     {"name": "IPredicate", "size": 383},
     {"name": "IValueProxy", "size": 874},
     {
      "name": "math",
      "children": [
       {"name": "DenseMatrix", "size": 3165},
       {"name": "IMatrix", "size": 2815},
       {"name": "SparseMatrix", "size": 3366}
      ]
     },
     {"name": "Maths", "size": 17705},
     {"name": "Orientation", "size": 1486},
     {
      "name": "palette",
      "children": [
       {"name": "ColorPalette", "size": 6367},
       {"name": "Palette", "size": 1229},
       {"name": "ShapePalette", "size": 2059},
       {"name": "SizePalette", "size": 2291}
      ]
     },
     {"name": "Property", "size": 5559},
     {"name": "Shapes", "size": 19118},
     {"name": "Sort", "size": 6887},
     {"name": "Stats", "size": 6557},
     {"name": "Strings", "size": 22026}
    ]
   },
   {
    "name": "vis",
    "children": [
     {
      "name": "axis",
      "children": [
       {"name": "Axes", "size": 1302},
       {"name": "Axis", "size": 24593},
       {"name": "AxisGridLine", "size": 652},
       {"name": "AxisLabel", "size": 636},
       {"name": "CartesianAxes", "size": 6703}
      ]
     },
     {
      "name": "controls",
      "children": [
       {"name": "AnchorControl", "size": 2138},
       {"name": "ClickControl", "size": 3824},
       {"name": "Control", "size": 1353},
       {"name": "ControlList", "size": 4665},
       {"name": "DragControl", "size": 2649},
       {"name": "ExpandControl", "size": 2832},
       {"name": "HoverControl", "size": 4896},
       {"name": "IControl", "size": 763},
       {"name": "PanZoomControl", "size": 5222},
       {"name": "SelectionControl", "size": 7862},
       {"name": "TooltipControl", "size": 8435}
      ]
     },
     {
      "name": "data",
      "children": [
       {"name": "Data", "size": 20544},
       {"name": "DataList", "size": 19788},
       {"name": "DataSprite", "size": 10349},
       {"name": "EdgeSprite", "size": 3301},
       {"name": "NodeSprite", "size": 19382},
       {
        "name": "render",
        "children": [
         {"name": "ArrowType", "size": 698},
         {"name": "EdgeRenderer", "size": 5569},
         {"name": "IRenderer", "size": 353},
         {"name": "ShapeRenderer", "size": 2247}
        ]
       },
       {"name": "ScaleBinding", "size": 11275},
       {"name": "Tree", "size": 7147},
       {"name": "TreeBuilder", "size": 9930}
      ]
     },
     {
      "name": "events",
      "children": [
       {"name": "DataEvent", "size": 2313},
       {"name": "SelectionEvent", "size": 1880},
       {"name": "TooltipEvent", "size": 1701},
       {"name": "VisualizationEvent", "size": 1117}
      ]
     },
     {
      "name": "legend",
      "children": [
       {"name": "Legend", "size": 20859},
       {"name": "LegendItem", "size": 4614},
       {"name": "LegendRange", "size": 10530}
      ]
     },
     {
      "name": "operator",
      "children": [
       {
        "name": "distortion",
        "children": [
         {"name": "BifocalDistortion", "size": 4461},
         {"name": "Distortion", "size": 6314},
         {"name": "FisheyeDistortion", "size": 3444}
        ]
       },
       {
        "name": "encoder",
        "children": [
         {"name": "ColorEncoder", "size": 3179},
         {"name": "Encoder", "size": 4060},
         {"name": "PropertyEncoder", "size": 4138},
         {"name": "ShapeEncoder", "size": 1690},
         {"name": "SizeEncoder", "size": 1830}
        ]
       },
       {
        "name": "filter",
        "children": [
         {"name": "FisheyeTreeFilter", "size": 5219},
         {"name": "GraphDistanceFilter", "size": 3165},
         {"name": "VisibilityFilter", "size": 3509}
        ]
       },
       {"name": "IOperator", "size": 1286},
       {
        "name": "label",
        "children": [
         {"name": "Labeler", "size": 9956},
         {"name": "RadialLabeler", "size": 3899},
         {"name": "StackedAreaLabeler", "size": 3202}
        ]
       },
       {
        "name": "layout",
        "children": [
         {"name": "AxisLayout", "size": 6725},
         {"name": "BundledEdgeRouter", "size": 3727},
         {"name": "CircleLayout", "size": 9317},
         {"name": "CirclePackingLayout", "size": 12003},
         {"name": "DendrogramLayout", "size": 4853},
         {"name": "ForceDirectedLayout", "size": 8411},
         {"name": "IcicleTreeLayout", "size": 4864},
         {"name": "IndentedTreeLayout", "size": 3174},
         {"name": "Layout", "size": 7881},
         {"name": "NodeLinkTreeLayout", "size": 12870},
         {"name": "PieLayout", "size": 2728},
         {"name": "RadialTreeLayout", "size": 12348},
         {"name": "RandomLayout", "size": 870},
         {"name": "StackedAreaLayout", "size": 9121},
         {"name": "TreeMapLayout", "size": 9191}
        ]
       },
       {"name": "Operator", "size": 2490},
       {"name": "OperatorList", "size": 5248},
       {"name": "OperatorSequence", "size": 4190},
       {"name": "OperatorSwitch", "size": 2581},
       {"name": "SortOperator", "size": 2023}
      ]
     },
     {"name": "Visualization", "size": 16540}
    ]
   }
  ]
 }

sunburst.js

import React from "react";

import * as d3 from 'd3';

// import isEqual from 'lodash.isequal';

class Sunburst extends React.Component {

  componentDidMount() {

      this.renderSunburst(this.props);

  }

  componentWillReceiveProps(nextProps) {

      // if (!isEqual(this.props, nextProps)) {

          this.renderSunburst(nextProps);

      // }

  }

  arcTweenData(a, i, node, x, arc) {  

      const oi = d3.interpolate({ x0: (a.x0s ? a.x0s : 0), x1: (a.x1s ? a.x1s : 0) }, a);

      function tween(t) {

          const b = oi(t);

          a.x0s = b.x0;  

          a.x1s = b.x1;   

          return arc(b);

      }

      if (i === 0) {

          const xd = d3.interpolate(x.domain(), [node.x0, node.x1]);

          return function (t) {

              x.domain(xd(t));

              return tween(t);

          };

      } else {  

          return tween;

      }

  }

  formatNameTooltip(d) {

      const name = d.data.name;

      return `${name}`;

  }

  labelName(d) {

      const name = d.data.name;

      return `${name}`;

  }

  labelVisible(d) {

      return d.y1 <= 3 && d.y0 >= 1 && (d.y1 - d.y0) * (d.x1 - d.x0) > 0.03;

  }

  labelTransform(d) {

      const x = (d.x0 + d.x1) / 2 * 180 / Math.PI;

      const y = (d.y0 + d.y1) / 2 * 130;

      return `rotate(${x - 90}) translate(${y},0) rotate(${x < 180 ? 0 : 180})`;

  }

  update(root, firstBuild, svg, partition, hueDXScale, x, y, radius, arc, node, self) {  

      if (firstBuild) {

          firstBuild = false; 

          function click(d) { 

              node = d; // eslint-disable-line

              self.props.onSelect && self.props.onSelect(d);

              svg.selectAll('path').transition().duration(1000);

          }

          const tooltipContent = self.props.tooltipContent;

          const tooltip = d3.select(`#${self.props.keyId}`)

              .append(tooltipContent ? tooltipContent.type : 'div')

              .style('position', 'absolute')

              .style('z-index', '10')

              .style('opacity', '0');

          if (tooltipContent) {

              Object.keys(tooltipContent.props).forEach((key) => {

                  tooltip.attr(key, tooltipContent.props[key]);

              });

          }

          svg.selectAll('path')

              .data(partition(root).descendants())

              .enter()

              .append('path')

              .style('fill', (d) => {

                  const current = d;

                  if (current.depth === 0) {

                      return '#ffff';

                  }

                  if (current.depth === 1) {

                      return '#3f51b5';

                  }

                  if (current.depth > 1) {

                      return '#f44336';

                  }

              })

              .attr('stroke', '#fff')                 // lines color

              .attr('stroke-width', '2')                  // line width             

              .on('click', d => click(d, node, svg, self, x, y, radius, arc))

              .on('mouseover', function (d) {

                  if (self.props.tooltip) {

                      d3.select(this).style('cursor', 'pointer');

                      tooltip.html(() => { const name = self.formatNameTooltip(d); return name; });

                      return tooltip.transition().duration(50).style('opacity', 1);

                  }

                  return null;

              })

              .on('mousemove', () => {

                  if (self.props.tooltip) {

                      tooltip

                          .style('top', `${d3.event.pageY - 50}px`)

                          .style('left', `${self.props.tooltipPosition === 'right' ? d3.event.pageX - 100 : d3.event.pageX - 50}px`);

                  }

                  return null;

              })

              .on('mouseout', function () {

                  if (self.props.tooltip) {

                      d3.select(this).style('cursor', 'default');

                      tooltip.transition().duration(50).style('opacity', 0);

                  }

                  return null;

              })

      } else {

          svg.selectAll('path').data(partition(root).descendants());

      }

      svg.selectAll('path').transition().duration(1000).attrTween('d', (d, i) => self.arcTweenData(d, i, node, x, arc));

  }

  renderSunburst(props) {

      if (props.data) {

          const self = this, // eslint-disable-line

              gWidth = props.width,

              gHeight = props.height,

              radius = (Math.min(gWidth, gHeight) / 2) - 10,

              svg = d3.select('#anagraphsvg').append('g').attr('transform', `translate(${gWidth / 2},${gHeight / 2})`),

              x = d3.scaleLinear().range([0, 2 * Math.PI]),

              y = props.scale === 'linear' ? d3.scaleLinear().range([0, radius]) : d3.scaleSqrt().range([0, radius]),

              partition = d3.partition(),

              arc = d3.arc()

                  .startAngle(d => Math.max(0, Math.min(2 * Math.PI, x(d.x0))))

                  .endAngle(d => Math.max(0, Math.min(2 * Math.PI, x(d.x1))))

                  .innerRadius(d => Math.max(0, y(d.y0)))

                  .outerRadius(d => Math.max(0, y(d.y1))),

              hueDXScale = d3.scaleLinear()

                  .domain([0, 1])

                  .range([0, 360]),

              rootData = d3.hierarchy(props.data);

          const firstBuild = true;

          const node = rootData;

          rootData.sum(d => d.size);

          self.update(rootData, firstBuild, svg, partition, hueDXScale, x, y, radius, arc, node, self); // GO!

      } 

  }

  render() {

      return (

          <div id={this.props.keyId} className="text-center">

              <svg style={{ width: parseInt(this.props.width, 10) || 480, height: parseInt(this.props.height, 10) || 400 }} id="anagraphsvg" />

          </div>

      );

  }

}

export default Sunburst;

The chart is getting rendered correctly.
The problem is that the zoomable feature is not working properly. Any help on this. Any change that I need to make?