React Redux使用样式和withrouter连接

时间:2018-10-15 19:23:46

标签: reactjs react-redux router

我正在尝试在redux中使用connect作为

连接(mapstate ..,mapdis ..)(withstyles(dashboardstyle)(dashboard)

以上工作正常,但我还需要添加withRouter。 变化以下给出错误 连接(mapstate ..,mapdis ..)(withstyles(仪表板样式),withrouter(仪表板))

每当我添加它时,都会出现诸如无法将类用作函数的异常。 任何想法如何解决

2 个答案:

答案 0 :(得分:6)

您将需要重新安装:

npm i -s recompose

然后在您的组件中:

import compose from 'recompose/compose'


export default compose(
   withStyles(styles),
   connect(mapStateToProps, mapDispatchToProps)
)(withRouter(Dashboard))

答案 1 :(得分:2)

withStyles(styles)的返回值是多少?我怀疑这是一个“高阶组件”(HOC),该函数希望传递给React组件进行包装,并返回一个React组件。如果是这样,那么您真的希望您的呼叫看起来像这样:

export default withStyles(styles)(
    connect(mapStateToProps, mapDispatchToProps)(withRouter(Dashboard))
)

但是,该代码非常丑陋,并且随着您添加更多的HOC会迅速变得更糟,这就是Recompose suggestion是更好的方法的原因。 (但我想补充一些背景信息,以使读者了解是什么导致了OP中的问题。)