【发布时间】:2020-04-30 09:53:47
【问题描述】:
在 TypeScript 中处理 react 应用程序。
我正在尝试了解使用 as 导出默认组件的正确语法
到现在我都用过:
class HomePage extends Component<IProps, IState> {
...
}
export default HomePage
或很快:
export default class HomePage extends Component<IProps, IState> {
...
}
现在,在添加了 redux 支持之后。我有类似的东西:
class HomePage extends Component<IProps, IState> {
...
}
const mapStateToProps = (state: StoreState) => {
...
};
const mapDispatchToProps = {
...
};
export default connect(mapStateToProps, mapDispatchToProps)(HomePage);
但我不知道如何将as 添加到连接默认导出
例如:
// This is NOT working. I get Syntax error.
export default connect(mapStateToProps, mapDispatchToProps)(HomePage) as HomePage;
有可能吗?还是我应该这样做?似乎无论如何导出名称都是HomePage(当我在其他文件中导入HomePage时,IDE会自动检测并导入此文件)。它是从哪里取来的?文件名(HomePage.tsx)?
这对我有用:
const connectedHomePage = connect(mapStateToProps, mapDispatchToProps)(HomePage)
export {connectedHomePage as HomePage};
但它是两行(我更喜欢一行)而且它不是默认导出。
那么,有没有办法将export default 和as 添加到语句中?只是为了清楚导出的名称是什么?
【问题讨论】:
-
export default始终导出为default。您希望使用此语法得到什么? -
@Cerberus 了解如何确保当我从另一个文件导入此文件时,IDE 会将此导出识别为
HomePage并能够自动导入它(它实际上是这样做的!)我理解为什么 IDE 可以将export default class HomePage识别为主页(import HomePage from './HomePage'),但是当我在另一个文件中写入HomePage时不确定它如何也适用于export default connect(mapStateToProps, mapDispatchToProps)(HomePage);,IDE 可以找到它并自动导入它.所以我想也许它知道我想通过文件名导入哪个默认值? -
那么它似乎依赖于IDE,但它可能可以使用文件名或识别一些常见的习语。在您的情况下是否需要使用
export default ..而不是例如export const HomePage = ...? -
@Cerberus 谢谢。不,这只是因为我很好奇事情是如何运作的,而且
import HomePage from './HomePage'看起来比import {HomePage} from './HomePage'更好
标签: reactjs typescript