2016-08-04 2 views
0

이 예제에서는 Datamaps을 사용하고 있습니다. .datamaps-subunit.MI에서 클릭하면 해당 부분의 색상이 변경되는 Datamap이 있습니다. 내 React 상태에 숫자를 저장하고 싶습니다. 그러나 아래 코드는 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}); 
      }); 
     } 
    }); 
}, 
관련 문제