我看到以下情况很好:
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
或类似的?
答案 0 :(得分:224)
CollectionView
与const
类似,it is a LexicalDeclaration( VariableStatement,声明)用于在块中定义标识符。
您正尝试将其与let
关键字which expects a HoistableDeclaration, ClassDeclaration or AssignmentExpression混合使用以跟进它。
因此它是 SyntaxError 。
如果您想default
需要提供标识符,请不要使用const
。
default
本身接受 VariableStatement 或声明。
AFAIK导出本身不应该在当前范围内添加任何内容。
以下内容正常
export
export default Tab;
成为 AssignmentExpression ,因为它的名称为 default ?
Tab
很好
此处export default Tab = connect( mapState, mapDispatch )( Tabs );
是 AssignmentExpression 。
答案 1 :(得分:31)
如果你想导出默认的const / let而不是
,你也可以这样做const MyComponent = ({ attr1, attr2 }) => (<p>Now Export On other Line</p>);
export default MyComponent
你可以做这样的事情,我个人不喜欢。
let MyComponent;
export default MyComponent = ({ }) => (<p>Now Export On SameLine</p>);
答案 2 :(得分:7)
保罗的答案是你正在寻找的答案。但是,实际上,我认为您可能对我在自己的React + Redux应用程序中使用的模式感兴趣。
以下是我的一条路线的精简示例,展示了如何定义组件并将其作为默认值导出为单个语句:
import React from 'react';
import { connect } from 'react-redux';
@connect((state, props) => ({
appVersion: state.appVersion
// other scene props, calculated from app state & route props
}))
export default class SceneName extends React.Component { /* ... */ }
(注意:我使用术语“场景”作为任何路线的顶级组件。)
我希望这会有所帮助。我认为它比传统的connect( mapState, mapDispatch )( BareComponent )
答案 3 :(得分:6)
如果在文件名MyComponent.js
中解释了组件名称,则不要将组件命名,使代码保持苗条。
import React from 'react'
export default (props) =>
<div id='static-page-template'>
{props.children}
</div>
答案 4 :(得分:1)
保罗的答案是最好的。要扩展更多,
每个文件只能有一个默认导出。而可以有多个const出口。可以使用任何名称导入默认变量,而可以使用任何名称导入const变量。
var message2 ='我已被导出';
导出默认消息2;
export const message ='我也被导出'
在导入方面,我们需要这样导入:
从'./test'导入{消息};
或
从“ ./test”导入消息;
第一次导入时,将导入const变量,而第二次导入时,将导入默认变量。
答案 5 :(得分:0)
default
基本上是const someVariableName
您不需要命名标识符,因为它是文件的默认导出,并且可以在导入文件时随意命名,因此default
只是将变量赋值压缩为一个关键字。 / p>
答案 6 :(得分:-1)
对我来说,这只是打字稿的许多特质之一(强调idio(t)),它使人们拔头发并诅咒开发人员。也许他们可以努力提出更多可理解的错误消息。