我正在尝试将回调传递给函数,但不断收到错误,
未捕获的TypeError:回调不是函数。
loadContacts: function () {
var pageNumber = this.state.pageNumber,
pageSize = this.state.pageSize;
BasketService.getContacts(pageNumber, pageSize, function(contacts){
contacts = this.convertPropertyNames(contacts);
this.setState({
contacts: contacts
});
}.bind(this));
},
// trying to pass function callback here
listenerForRemoveContact: function(data){
BasketService.removePerson(data.id, this.loadContacts());
},
答案 0 :(得分:1)
this.loadContacts()
调用 loadContacts
并将返回值传递给removePerson
。
loadContacts
没有return
语句,因此该值为undefined
。
您正在尝试使用undefined
,就像它是一个函数一样。
如果你想传递loadContacts
作为回调函数,那么不要调用它:删除()
。
请注意,这会更改函数内this
的值,因此您还应使用bind()
来维护上下文。
答案 1 :(得分:0)
BasketService.removePerson(data.id, this.loadContacts);
^你可能想传入函数对象,而不是调用函数
的结果传入
this.loadContacts()
将传入loadContacts返回的值(在这种情况下,它不会返回任何内容)
答案 2 :(得分:0)
你的代码this.loadContacts()调用函数loadContacts并将其返回值作为参数传递给removePerson。
loadContacts不返回任何内容,因此该函数的返回值未定义。
如果要将loadContacts作为回调函数传递,则不要调用它只是从中删除invoking()。
就这样通过 removePerson(data.id,this.loadContacts);
就是这样。