【问题标题】:Why I can't apply redux's connect with material-ui withStyles?为什么我不能应用 redux 的 connect with material-ui withStyles?
【发布时间】:2019-11-29 15:56:49
【问题描述】:

我正在尝试通过“recompose”中的 { compose } 函数通过 connect() 函数在 redux 容器组件中添加来自 material-ui 的 withStyles() 钩子,并从 recompose 包中获取此错误:

TypeError: Function.prototype.apply 在# 上被调用,这是一个对象而不是一个函数

我请求任何帮助,我已经花了太多时间了


import { withStyles } from '@material-ui/core/styles';
import { styles } from './styles';
import { compose } from 'recompose';
import { connect } from 'react-redux';

...

function mapStateToProps(state) {
  return {
    someVal: state.someVal,
  }
}

function mapDispatchToProps(dispatch) {
  return ({
    changeVal: () => {dispatch('CHANGE_VAL')}
  })
}

export default compose(
  withStyles(styles),
  connect(mapStateToProps, mapDispatchToProps)(App)
);


//if i do:

export default connect(mapStateToProps,mapDispatchToProps)(App)

//or:

export default withStyles(styles)(App)

//it's work. (just to clarify)

【问题讨论】:

  • export default connect(mapStateToProps,mapDispatchToProps)(withStyles(styles)(App))

标签: javascript reactjs redux material-ui recompose


【解决方案1】:

connectwithStyles 都是HOC

高阶组件是一个接受一个组件并返回一个新组件的函数。

所以你需要将 App 包裹在 withStylesconnect

export default connect(mapStateToProps,mapDispatchToProps)(withStyles(styles)(App))

【讨论】:

    猜你喜欢
    • 2019-11-21
    • 1970-01-01
    • 2019-03-06
    • 2019-07-12
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多