Why Is `Export Default Const` invalid?
我看到以下情况很好:
1 2 | const Tab = connect( mapState, mapDispatch )( Tabs ); export default Tab; |
但是,这是不正确的:
1 | export default const Tab = connect( mapState, mapDispatch )( Tabs ); |
但这很好:
1 | export default Tab = connect( mapState, mapDispatch )( Tabs ); |
请解释一下为什么
您正在尝试将其与
因此,它是一个SyntaxError。
如果要
AFAIK导出本身不应该在当前范围内添加任何内容。
The following is fine
export default Tab;
export default Tab = connect( mapState, mapDispatch )( Tabs ); is fine
这里
如果您要导出默认的const / let而不是
1 2 3 4 | const MyComponent = ({ attr1, attr2 }) => (<p> Now Export On other Line </p>); export default MyComponent |
您可以执行类似我个人不喜欢的操作。
1 2 3 4 | let MyComponent; export default MyComponent = ({ }) => (<p> Now Export On SameLine </p>); |
如果在文件名
1 2 3 4 5 | import React from 'react' export default (props) => {props.children} |
Paul的答案就是您要寻找的答案。但是,实际上,我想您可能会对我在自己的React + Redux应用程序中使用的模式感兴趣。
这是我的一条路线的精简示例,显示了如何定义组件并将其作为默认语句导出为单个语句:
1 2 3 4 5 6 7 8 | 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 { /* ... */ } |
(注意:我将术语"场景"用于任何路线的顶层组件)。
我希望这是有帮助的。我认为它比常规的
保罗的答案是最好的。要扩展更多,
每个文件只能有一个默认导出。而可以有多个const出口。可以使用任何名称导入默认变量,而可以使用任何名称导入const变量。
var message2 = 'I am exported';
export default message2;
export const message = 'I am also exported'
在导入方面,我们需要这样导入:
import { message } from './test';
要么
import message from './test';
在第一次导入时,将导入const变量,而在第二次导入时,将导入默认变量。
您不需要命名标识符,因为它是文件的默认导出,并且可以在导入文件时随意命名,因此
对我来说,这只是打字稿的许多特质之一(强调idio(t)),导致人们拔头发并诅咒开发人员。也许他们可以努力提出更多可理解的错误消息。