以下の内容は問題ないと思います。
const Tab = connect( mapState, mapDispatch )( Tabs );
export default Tab;
しかし、これは誤りです。
export default const Tab = connect( mapState, mapDispatch )( Tabs );
しかし、これは問題ありません:
export default Tab = connect( mapState, mapDispatch )( Tabs );
なぜconst
が無効なのか説明していただけますかexport default
? これは不必要な追加であり、 として宣言されたものはまたは でexport default
あると推定されるのでしょうかconst
?
ベストアンサー1
const
のようなものですlet
、それはLexicalDeclarationである( VariableStatement, Declaration ) ブロック内の識別子を定義するために使用されます。
これをキーワードと混ぜようとしていますdefault
。HoistableDeclaration、ClassDeclaration、またはAssignmentExpressionが必要ですそれに従うこと。
したがって、これはSyntaxErrorです。
何かしたい場合は、const
識別子を指定し、 を使用しないでくださいdefault
。
export
それ自体は、その右側にVariableStatementまたはDeclarationを受け入れます。
以下は問題ありません
export default Tab;
Tab
defaultという名前が付けられているため、AssignmentExpressionになります。
export default Tab = connect( mapState, mapDispatch )( Tabs );
結構です
以下はAssignmentExpressionTab = connect( mapState, mapDispatch )( Tabs );
です。
更新:問題を想像する別の方法
これを概念的に理解しようとしていて、上記の仕様上の理由が役に立たない場合は、「 が有効な識別子であり、予約済みトークンではない場合、と をdefault
記述する別の方法は何でしょうか?」と考えてください。export default Foo;
export default const Foo = 1;
この状況では、拡張して書くと次のようになります。
// pseudocode, this thought experiment is not valid JS
export default Foo;
// would be like
export const default = Foo;
export default const Foo = 1;
// would be like
export const default const Foo = 1;
// so would the following line make sense?
const bar const Foo = 1;
拡張は次のようになるべきだという正当な議論がある。
// pseudocode, this thought experiment is not valid JS
export default const Foo = 1;
// would be like
const Foo = 1;
export const default = Foo;
しかし、これは曖昧になるだろうセルゲイのコメントしたがって、代わりにこのパターンを明示的に記述する方が理にかなっています。