Ben*_*Ben 10 javascript ajax reactjs react-router
我正在使用React Router进行项目,我遇到了一些数据流问题.
在每个页面上都有一个AJAX调用,用于获取组件的数据.我一直把它们放进去componentDidMount:
// Below code is written in ES6
componentDidMount(){
$.get(someURL, (data)=>{
this.setState({data:data})
})
}
Run Code Online (Sandbox Code Playgroud)
虽然这适用于初始加载,但在URL更改时不会再次调用(需要手动刷新).我似乎无法找到适当的生命周期来放置AJAX调用.
有人请用正确的方法来启发我在React Router中获取数据.
Ben*_*Ben 18
经过一番搜索后,本自述文件最终解决了这个问题.
该文件中概述了两种解决方案:
用途addHandlerKey={true}:
<Route handler={User} path="/user/:userId" addHandlerKey={true} />
用componentWillReceiveProps而不是componentDidMount.
componentDidMount用于初始加载,componentWillReceiveProps用于后续加载._updateState,并在两个生命周期中调用它.我的代码现在:
class Classes extends React.Component {
componentDidMount(){ this._updateState() }
componentWillReceiveProps(){ this._updateState() }
_updateState(){
$.get(/*Some URL*/, (data)=>{
this.setState({data:data})
})
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5411 次 |
| 最近记录: |