我正在尝试向表中添加一个删除按钮,以便获取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/