导出默认值和声明匿名函数合而为一

Exporting a default & declaring anon function all in one

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

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

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

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

您的备选方案是:

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

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

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

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

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

    export default function Checkbox(props) {
        return …
    }
    

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