2017-09-17 39 views
0

我正在使用React,Redux,现在尝试包含Material-UI。 Reduct和Matrial-UI库显示示例代码,最后有一个导出。JavaScript导出2函数

终极版

export default connect(mapStateToProps, actions)(myComponent) 

材料的UI

export default withStyles(styles)(myComponent); 

当我试图把两者出口合计,我已经摆脱了默认。因此,我认为它应该是这样的

这不起作用:

export { 
    connect(mapStateToProps, actions)(myComponent), 
    withStyles(styles)(myComponent) 
} 

错误:

"Syntax error: Unexpected token, expected , (120:15) 
     export {connect(mapStateToProps, actions)(myComponent)} 
        ^

这不起作用: 我试图名该函数,但然后函数没有被调用,由于某些原因,我不知道。

import * as myConnect from 'react-redux' 
... 
export const connect = myConnect.connect(mapStateToProps, actions)(View) 

我不知道'引擎盖下'发生了什么,所以我卡住了。任何帮助表示赞赏:-)

编辑 我还没有找到解决方案,但我解决了这个问题。我将组件(myComponent)拆分为一个额外的文件。设计更像这样的事件,现在它区分纯粹的组件和容器。

回答

0
{ 
    connect(mapStateToProps, actions)(myComponent), 
    withStyles(styles)(myComponent) 
} 

这不是一个有效的对象;你错过了钥匙。

{ 
    myConnectedComponent: connect(mapStateToProps, actions)(myComponent), 
    myStyledComponent: withStyles(styles)(myComponent) 
} 
+0

虽然OP *可能*导出对象,命名为出口可能更有意义。 –

0

让他们的名字命名出口:

export const myConnect = connect(mapStateToProps, actions)(myComponent); 

export const myStyles = withStyles(styles)(myComponent); 

然后使用名为进口:

import {myConnect} from './yourscript'; 
2

还有另一种解决方案,很多人都需要在一个点上建立HOC(高顺序组件)。我会建议使用Recompose实用程序(如果您可以将其他软件包添加到您的项目中)。这是关于它在中等的link to great article

所以,如果我将在这里写你的代码是怎么会写建立HOC:

import compose from 'recompose/compose'; 

    //...your component code here 

    export default compose(withStyles(styles), 
          connect(mapStateToProps, actions))(myComponent);