回调不是函数错误

时间:2015-07-29 07:36:48

标签: javascript reactjs closures

我正在尝试将回调传递给函数,但不断收到错误,

未捕获的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());

},

3 个答案:

答案 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);

就是这样。