setState不是一个函数

时间:2017-01-23 16:51:29

标签: javascript reactjs firebase

我正在尝试向表格添加删除按钮,以便我可以获取el.id并将其删除。我无法阅读el.id,因此我想将其添加到各州。

请告诉我是否有其他解决方案或是否可以修复。

这是我的代码:

componentDidMount: function(){
       var url = 'I have an api here'

       axios.get(url).then(function(response){
         var arr = $.map(response.data, function(el) {
           $.each(el, function (i, word) {
             this.setState({el: el});
               $("#data").append(
                 '<tr><td>' + el.name + '</td><td>' + el.email + '</td><td>' + el.category + '</td><td>' + el.address + '</td><td>' + '<button onClick={console.log(el)} class="btn btn-primary">delete</button>'
               );
           });
         });
         $('body').addClass('stop-scrolling');
       })
  },

1 个答案:

答案 0 :(得分:-1)

您在回调函数中调用了this.setState,因此this没有达到预期的上下文。

您可以将this的值存储在变量中:

componentDidMount: function(){
   var url = 'I have an api here';
   var self = this;

   axios.get(url).then(function(response){
     var arr = $.map(response.data, function(el) {
       $.each(el, function (i, word) {
         self.setState({el: el});
         $("#data").append('<tr><td>' + el.name + '</td><td>' + el.email + '</td><td>' + el.category + '</td><td>' + el.address + '</td><td>' + '<button onClick={console.log(el)} class="btn btn-primary">delete</button>');
       });
     });
     $('body').addClass('stop-scrolling');
   })
},

或者您可以使用箭头功能来解决您的问题