那么来自axios内部的函数调用呢?

时间:2016-09-08 12:07:51

标签: reactjs axios

如何从axios内部调用函数,然后在下面是我的代码,它不能正常工作

handleClick(userid){
  axios.get(
    "http://localhost:4000/user/"+userid+"/items.json")
    .then(function (response) {
      dispatch(this.buildhtml.bind(response))
    })
}


  buildhtml(response){
  console.log("m called")
  }

buildhtml函数没有执行!!任何想法

2 个答案:

答案 0 :(得分:5)

您的代码无法正常工作,因为您的this将使用您当前的实施方式未定义。

你能试试吗?

handleClick(userid){
  var self=this;
  axios.get(
    "http://localhost:4000/user/"+userid+"/items.json")
    .then(function (response) {
      self.buildhtml.bind(response) // would work
      dispatch(self.buildhtml.bind(response)) //wont work
    })
}

  buildhtml(response){
  console.log("m called")
  }

现在我看到上面也不会工作,即使你把它改成自己。您正在尝试使用调度。在发送时,您需要传递操作。。 Reducers将state和action作为参数,并根据传递的操作更新状态。

现在,某个操作可能会返回一个对象或一个函数。请仔细阅读redux的概念。这不是应该分派行动的方式

答案 1 :(得分:3)

Vue.jsaxios一起使用时,我也遇到了这个问题,但这就是我解决问题的方法。

let vue = new Vue({
 el:#<element>,
 methods:{

  method1()
  {
 axios.post('<url>',{<data>})
 .then( ( res ) => {
  this.method2(res)  // method call to method2 
  } )
 .catch( ( err ) => { <call> } );     
  },//method1 end

method2(res){
// statements
} 

}
});

参考this