Reactjs 调用API时componentWillMount与componentDidMount

Reactjs 调用API时componentWillMount与componentDidMount,reactjs,Reactjs,我刚刚将Facebook登录(Javascript SDK)添加到我的React应用程序中。问题是,当我在componentDidMount中添加Facebook API时,网页的加载速度变得非常慢。因此,我尝试了一种不同的方法,即componentWillMount,尽管存在弃用警告。但将API调用更改为ComponentMount似乎会显著提高加载速度 在网站性能方面,你认为componentWillMount和componentDidMount之间有区别吗?使用componentWillM

我刚刚将Facebook登录(Javascript SDK)添加到我的React应用程序中。问题是,当我在componentDidMount中添加Facebook API时,网页的加载速度变得非常慢。因此,我尝试了一种不同的方法,即componentWillMount,尽管存在弃用警告。但将API调用更改为ComponentMount似乎会显著提高加载速度

在网站性能方面,你认为componentWillMount和componentDidMount之间有区别吗?使用componentWillMount方法可以吗?还是您强烈推荐componentDidMount

class FacebookAuth extends Component {
  UNSAFE_componentWillMount() {
    window.fbAsyncInit = () => {
      window.FB.init({
        appId: "ID",
        cookie: true, 
        xfbml: true, 
        version: "v4.0" 
      });
}}

您不应该使用componentWillMount,它将被React v17完全删除


在您的用例中应该没有明显的性能差异。这肯定是另一个问题。您的API调用都应该在componentDidMount中。

随着React的新更新,
componentWillMount
在加载组件时可能会多次调用,因此会出现不可预测的行为。这就是为什么不建议使用
组件willmount
。如果您仍然认为将代码放入
componentWillMount
会降低页面加载速度,请尝试将其移动到
componentdiddupdate
,如下所示

componentDidUpdate(prevProps){
  if(prevProps !== this.props){
      //your code here
  }
}

检查这个-。这可能是启动时完整组件的重复加载,同时facbook api也并行加载,所以在完全加载初始组件后执行componentDidMount时,它的速度会稍慢,所以看起来会稍快一些。