提问者:小点点

无状态响应函数的首选语法是什么?为什么啊?


方法1:

const BasicProfileInfo = (props: BasicProfileInfoProps) => {
    return (
            <MainContainer>
              {....}
            </MainContainer>
    )
}

方法二:

function BasicProfileInfo(props: BasicProfileInfoProps){
    return (
            <MainContainer>
              {....}
            </MainContainer>
    )
}

项目环境:

  • Babel-eslint: 8.0.2
  • 巴贝尔插件转换类属性 Babel-preset-es2015: 6.24.1
  • Babel-预设-反应-本地: 4.0.0
  • 反应:16.0.0
  • 反应原生:0.48.4
  • mobx: 3.3.1
  • mobx-反应:4.3.3

共3个答案

匿名用户

箭头函数可以缩短为隐含返回:

const BasicProfileInfo = (props: BasicProfileInfoProps) => (
    <MainContainer>
      {....}
    </MainContainer>
);

但是它在ES5输出中的占用空间比常规函数声明多了一点,因为箭头以任何方式传递到常规函数:

var BasicProfileInfo = function BasicProfileInfo(props) { return ... }

这是它们作为无状态组件的唯一区别。箭头函数没有自己的this参数,但情况并非如此。

匿名用户

使用“arrow function”(箭头函数)表示法的一个优点是,箭头函数没有自己的this值,如果您想从外部函数定义中保留this,这一点很有用。

但是,如果您的组件是无状态的,这并不重要,所以使用哪一个组件也不重要。

匿名用户

React组件将使用函数名作为调试消息和开发人员控制台中的显示名。默认的显示名称是组件,它的用处要小得多。我认为,仅此一点就足以让我们更喜欢显式命名的函数(方法2)。

编辑:如下所述,OP的任何一种方法都将正确填充displayName。唯一不会出现的情况是导出真正匿名的函数,如:export default()=