This question already has answers here:
Are 'Arrow Functions' and 'Functions' equivalent / exchangeable?
                            
                                (2个答案)
                            
                    
                2年前关闭。
        

    

在展示如何创建高阶组件时,大多数示例都使用function关键字。

以下来自React文档的示例:

function logProps(WrappedComponent) {
  return class extends React.Component {
    componentWillReceiveProps(nextProps) {
      console.log('Current props: ', this.props);
      console.log('Next props: ', nextProps);
    }
    render() {
      // Wraps the input component in a container, without mutating it. Good!
      return <WrappedComponent {...this.props} />;
    }
  }
}


在我工作的地方,我们使用TypeScript,并且有TS-lint规则不使用function关键字。

因此,高级版本组件的JS版本将如下所示:

export const collapse = (options) =>
(Trigger)  =>
   class C extends React.Component {
   }


问题是:有什么区别,使用带有function关键字的语法有什么好处吗?

最佳答案

在您的情况下,没有区别-它们的行为相同。

但在某些情况下并非如此-关于此主题有一个很好的discussion

关于javascript - 高阶组件:function关键字vs arrow function ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44669767/

10-13 00:17