2016-08-04 10 views
0

この例ではDatamapsを使用しています。 .datamaps-subunit.MIでクリックすると、その部分の色が変わるDatamapがあります。私はまた、私のリアクト状態に数字を保存したいと思う。ただし、以下のコードはthis.setState is not a functionというエラーになります。データマップでsetstateに反応しますか?

lemap:function(){ 
    var map = new Datamap({ 
     element: document.getElementById('maincontains'), 
     scope: 'usa', 
     fills: {defaultFill: 'rgb(217, 217, 217)'}, 
     done: function(datamap) { 
      datamap.svg.select('.datamaps-subunit.MI').on('click', function(geography) { 
       var m = {}; 
       var bis = this; 
       m[geography.id] = 'pink'; 
       datamap.updateChoropleth(m); 
       this.setState({trumpnum: 12}); 
      }); 
     } 
    }); 
}, 
+2

このエラーは 'this'が反応オブジェクト –

答えて

0

機能のすぐ下にvar sting = thisを追加して修正しました。

lemap:function(){ 
var sting = this; 
    var map = new Datamap({ 
     element: document.getElementById('maincontains'), 
     scope: 'usa', 
     fills: {defaultFill: 'rgb(217, 217, 217)'}, 
     done: function(datamap) { 
      datamap.svg.select('.datamaps-subunit.MI').on('click', function(geography) { 
       var m = {}; 
       var bis = this; 
       m[geography.id] = 'pink'; 
       datamap.updateChoropleth(m); 
       sting.setState({trumpnum: 12}); 
      }); 
     } 
    }); 
}, 
関連する問題