javascript - setState 不是一个函数

标签 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');
       })
  },

最佳答案

您在回调函数内调用 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');
   })
},

或者你可以使用箭头函数来解决你的问题

关于javascript - setState 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41811495/

相关文章:

javascript - Underscore JS 数组和带对象的数组的区别

javascript - 将边距添加到 div 内的 h3 会移动整个 div?

html - 字体加载需要明显的瞬间。有没有办法解决?

reactjs - 我可以使用 React 路由器创建别名路由吗?

javascript - Firebase 检索返回未定义/对象对象

java - 安卓 Firebase Firestore : Get data from deep in Firestore document

javascript - Chrome 扩展程序 : Cannot get background to sendMessage to content-script

javascript - 编写此 JQuery 代码的更好方法

ios - React Native - 预期参数类型“RCTViewManagerUIBlock”

java - Firebase:如何在不更新/删除子子项的情况下为子项设置值?