为啥我不能应用 redux 的 connect with material-ui withStyles?
Posted
技术标签:
【中文标题】为啥我不能应用 redux 的 connect with material-ui withStyles?【英文标题】: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))
【参考方案1】:
connect
和withStyles
都是HOC
高阶组件是一个接受一个组件并返回一个新组件的函数。
所以你需要将 App 包裹在 withStyles
和 connect
中
export default connect(mapStateToProps,mapDispatchToProps)(withStyles(styles)(App))
【讨论】:
以上是关于为啥我不能应用 redux 的 connect with material-ui withStyles?的主要内容,如果未能解决你的问题,请参考以下文章
connect redux函数不能与react-native一起使用
为啥 xState 不能与 react redux 一起使用?