Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在哪里使用AJAX_Javascript_Ajax_Reactjs_React Router - Fatal编程技术网

Javascript 在哪里使用AJAX

Javascript 在哪里使用AJAX,javascript,ajax,reactjs,react-router,Javascript,Ajax,Reactjs,React Router,我正在使用的一个项目中工作,我在数据流方面遇到了一些问题 在每个页面上都有一个AJAX调用,用于获取组件的数据。我一直在将它们放在componentDidMount中: // Below code is written in ES6 componentDidMount(){ $.get(someURL, (data)=>{ this.setState({data:data}) }) } 虽然这在初始加载时有效,但在url更改时不会再次调用它(需要手动刷新)。我似乎找不到合

我正在使用的一个项目中工作,我在数据流方面遇到了一些问题

在每个页面上都有一个AJAX调用,用于获取组件的数据。我一直在将它们放在
componentDidMount
中:

// Below code is written in ES6
componentDidMount(){
  $.get(someURL, (data)=>{
    this.setState({data:data})
  })
}
虽然这在初始加载时有效,但在url更改时不会再次调用它(需要手动刷新)。我似乎找不到合适的方法来放置AJAX调用


请有人告诉我在React路由器中获取数据的正确方法。

经过一番搜索,最终解决了问题

本文件概述了两种解决方案:

  • 使用
    addHandlerKey={true}

  • 使用
    componentWillReceiveProps
    而不是
    componentDidMount

    • 我最终使用了两种,
      componentDidMount
      作为初始加载,而
      componentWillReceiveProps
      作为后续加载
    • 由于它们共享相同的代码,我创建了一个新函数
      \u updateState
      ,并在两个生命周期中调用它

  • 我现在的代码:

    class Classes extends React.Component {
      componentDidMount(){ this._updateState() }
      componentWillReceiveProps(){ this._updateState() }
      _updateState(){
        $.get(/*Some URL*/, (data)=>{
          this.setState({data:data})
        })
      }
    }
    

    你可以在组件Willmount lifeCycle Handler上启动ajax,
    README
    链接现在已断开。我知道,这是旧的,但是。。勾选这个: