Javascript 如何从ReactJS中的另一个方法运行ajax调用?

Javascript 如何从ReactJS中的另一个方法运行ajax调用?,javascript,ajax,reactjs,Javascript,Ajax,Reactjs,当我在其中一个子组件中选择锚定标记时,它使用ononClick事件调用pageChange。这很有效。我想调用另一个方法来触发ajax调用以获取页面数据: getPageData(slug){ axios.get('http://ajax-call.com/'+slug) .then((response) => { console.log( response ); }) .catch((error) => { conso

当我在其中一个子组件中选择锚定标记时,它使用on
onClick
事件调用
pageChange
。这很有效。我想调用另一个方法来触发ajax调用以获取页面数据:

getPageData(slug){
    axios.get('http://ajax-call.com/'+slug)
    .then((response) => {
        console.log( response );
    })
    .catch((error) => {
        console.log(error);
    });
}

pageChange(e){
    var slug = e.target.getAttribute('data-link');

    this.getPageData(slug);


    e.preventDefault();
}

我遇到了一个错误
无法读取null的属性“getPageData”
我想我需要将该方法绑定到
,但我可能走错了方向。

您可能只需要像您所说的那样绑定函数。有一个很好的快捷方式可以做到这一点:

pageChange = (e) => {
  var slug = e.target.getAttribute('data-link');

  this.getPageData(slug);

  e.preventDefault();
}
这大致类似于在
组件didmount
中绑定它:

componentDidMount() {
  this.pageChange = this.pageChange.bind(this);
}

如果你想读更多的话,你会读得更多。

。这个((响应)=>{}
应该是
。然后((响应)=>{}
感谢你的捕获。仍然会得到错误,但这有助于防止将来出现错误。谢谢!什么是
console.log(这个)
log in
pageChange
function?如何将
pageChange
设置为在代码处调用?可以使用
function.prototype.bind()
将对象绑定为函数体
pageChange.bind(/*具有getPageData属性的对象*/)
我实际上刚刚将
this.pageChange=this.pageChange.bind(this);
添加到我的
componentDidMount()
中,解决了我的问题。谢谢!