无法访问回调内的状态

时间:2017-08-12 20:13:03

标签: reactjs

我已经预测了我在迭代标记并调用getDetails函数的函数。在getDetails结束时,我在处理所有元素时调用回调函数。内部回调我试图访问州财产,但我无法访问它。我尝试过使用绑定方法但是我得到的错误是Uncaught TypeError:无法读取属性'回调' null。

if($_POST['action'] == "upvote"){
    // call upvoteImage function
}else if($_POST['action'] == "downvote"){
    // call downvoteImage function
}

1 个答案:

答案 0 :(得分:1)

使用箭头函数声明回调函数

callback = () => {
    console.log(this.state.markers);
}

并称之为:

if(itemsProcessed === markers.length) {
   this.callback();
}

<强>更新:: 您没有使用class绑定handlechange函数。所以首先你需要绑定你的handlechange函数。更好的方法是使用箭头函数,如::

handleChange = (event) => {

现在,如果你想让你的回调函数不再使用handlechange函数,那么你可以这样做(Link of working example)::

callback = () => {
     console.log(this.state.markers);
   }

  handleChange = (event) => {
   ...
   markers.forEach((place,index) => {
     services.getDetails(place, (place, status) =>  {
        itemsProcessed++;
        if(itemsProcessed === markers.length) {
            this.callback();
        }
    });
   });
 }

或者如果你想将你的回调函数保留在handlechang函数中,那么就可以这样做(Link of working example)::

handleChange = (event) => {
   let callback = () => {
     console.log(this.state.markers);
   }
   ...
   markers.forEach((place,index) => {
     services.getDetails(place, (place, status) =>  {
        itemsProcessed++;
        if(itemsProcessed === markers.length) {
            callback();
        }
    });
   });
 }