Javascript 为什么不';我们不能在render方法中编写axios.get(blabla)吗?

Javascript 为什么不';我们不能在render方法中编写axios.get(blabla)吗?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我们为什么不写信呢 axios .get('https://rallycoding.herokuapp.com/api/music_albums') .then(response => this.setState({ albums: response.data })); 在render方法中,是否必须将其放入componentWillMount 如果我们把它放在render方法的开头,会有什么问题 我将它放入渲染中,得到了相同的结果,但是教程说它应该在组件中安装一般来说,两者之间

我们为什么不写信呢

axios
  .get('https://rallycoding.herokuapp.com/api/music_albums')
  .then(response => this.setState({ albums: response.data }));
render
方法中,是否必须将其放入
componentWillMount

如果我们把它放在
render
方法的开头,会有什么问题


我将它放入
渲染
中,得到了相同的结果,但是教程说它应该在
组件中安装

一般来说,两者之间的区别在于您希望发出此请求的次数

如果您希望请求仅在第一次装入组件时发生,您将使用
ComponentWillMount
(更好)

如果希望请求在每次渲染时发生(不鼓励),则使用
render
方法

在您的情况下,将其放入
render
方法实际上会导致无限递归,因为每个请求调用
setState
,这将导致重新呈现,这将使调用
setState
的请求导致重新呈现

更不用说性能上的成本以及如此频繁的请求造成的网络拥塞了

类示例扩展了React.Component{
构造函数(){
超级()
此.state={
柜台:0
}
}
render(){
//假异步操作作为请求
设置超时(()=>{
const{counter}=this.state;
这是我的国家({
柜台:柜台+1
})
}, 500)
返回React.createElement('h3',null,this.state.counter)
}
}
ReactDOM.render(
React.createElement(示例),
document.querySelector(“#示例”)
)

永远重新渲染

一般来说,两者的区别在于您希望发出此请求的次数

如果您希望请求仅在第一次装入组件时发生,您将使用
ComponentWillMount
(更好)

如果希望请求在每次渲染时发生(不鼓励),则使用
render
方法

在您的情况下,将其放入
render
方法实际上会导致无限递归,因为每个请求调用
setState
,这将导致重新呈现,这将使调用
setState
的请求导致重新呈现

更不用说性能上的成本以及如此频繁的请求造成的网络拥塞了

类示例扩展了React.Component{
构造函数(){
超级()
此.state={
柜台:0
}
}
render(){
//假异步操作作为请求
设置超时(()=>{
const{counter}=this.state;
这是我的国家({
柜台:柜台+1
})
}, 500)
返回React.createElement('h3',null,this.state.counter)
}
}
ReactDOM.render(
React.createElement(示例),
document.querySelector(“#示例”)
)

永远重新渲染

好的,您将在每次重新渲染时提交一个请求,并且您不应该在渲染中设置状态,或者在渲染中的异步函数回调中设置状态。好的,您将在每次重新渲染时提交一个请求,并且您不应该在渲染中设置状态,或者在渲染中的异步函数回调中设置状态。