2015-07-29 4 views
0

Я пытаюсь передать обратный вызов функции, но продолжают получать ошибку,обратного вызова не является функцией ошибки

Uncaught 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
BasketService.removePerson(data.id, this.loadContacts); 

^вы, вероятно, хотите передать в объект функции, а не результат вызова функции

проходящее в

this.loadContacts() 

будет проходить в значении, которое loadContacts возвращается (в этом случае он ничего не возвращает)

+0

Спасибо за ответ – Bomber

1

this.loadContacts()звонкиloadContacts и передает его возвращаемое значение - removePerson.

loadContacts не имеет инструкции return, так что значение равно undefined.

Вы пытаетесь использовать undefined, как если бы это была функция.

Если вы хотите передать loadContacts в качестве функции обратного вызова, то не называть его: Удалите ().

Обратите внимание, что внутри функции будет изменено значение this, поэтому вы должны также использовать bind() для поддержания контекста.

0

Ваш код this.loadContacts() вызывает функцию loadContacts и передает свое возвращаемое значение removePerson как аргумент.

loadContacts ничего не возвращает, поэтому возвращаемое значение этой функции не определено.

Если вы хотите передать loadContacts в качестве функции обратного вызова, тогда не вызывайте его, просто удалите invoking() из него.

Просто пройдите вот так removePerson (data.id, this.loadContacts);

Все.

Смежные вопросы