【问题标题】:Exporting a default & declaring anon function all in one一站式导出默认和声明匿名函数
【发布时间】:2015-12-05 07:41:32
【问题描述】:

这是我想做的事情的一个例子,目前抛出了一个错误。我不确定我理解为什么,但是在一行上导出、分配默认值和分配一个变量在语法上是不正确的。让它成为匿名函数的好处是我可以使用胖箭头=> 并使用() 打开返回值,而不是打开{}return @987654327 @。

export default let Checkbox = (props) => (
  <div style={styles.checkboxContainer}>
    <input styleName={styles.checkbox} type="checkbox" />
    <span styleName={styles.checkboxStyled}></span>
  </div>
)

有没有办法在一行中完成所有这些操作?我不能/为什么它不在规范中有充分的理由吗?

【问题讨论】:

    标签: javascript ecmascript-6 babeljs


    【解决方案1】:

    如果需要,您可以对命名导出执行此操作,但对于默认导出则不行。

    你的选择是:

    • 不要声明变量。毕竟,您只想导出单个值:

      export default (props) => (
          …
      );
      
    • 声明变量并在两个单独的声明中导出它:

      let Checkbox = (props) => (
          …
      );
      export default Checkbox;
      

      如果您需要绑定到变量,因为您想(重新)分配给它(如let 建议的那样),请使用

      export {Checkbox as default};
      
    • 使用正确的函数声明(也绑定局部变量):

      export default function Checkbox(props) {
          return …
      }
      

      如果不需要,也可以导出未命名的函数声明。

    【讨论】:

    • 在你的最后一个例子中,结尾的; 是不必要的。
    • @torazaburo:是的,分号规则与所有这些新的声明和声明越来越混淆。像“导出被称为声明,但像语句一样以分号结尾,除非它们导出类或函数声明”?
    • 如果 (1) 除了导出它之外,您还想在文件的其他地方使用该东西,或者 (2) 您想给出一个箭头函数的名称。这与使用 export const x 定义变量并导出它没有什么不同。
    猜你喜欢
    • 2019-09-07
    • 1970-01-01
    • 2021-07-04
    • 2020-03-22
    • 1970-01-01
    • 2012-11-19
    • 2012-07-19
    • 1970-01-01
    • 2017-05-29
    相关资源
    最近更新 更多