javascript - 为什么我不能应用 redux 的 connect with material-ui withStyles?
问题描述
我正在尝试通过“recompose”中的 { compose } 函数在 redux 容器组件中使用 connect() 函数从 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)
解决方案
connect
并且withStyles
都是HOC
高阶组件是一个函数,它接受一个组件并返回一个新组件。
所以你需要将 App 包装在里面withStyles
并connect
export default connect(mapStateToProps,mapDispatchToProps)(withStyles(styles)(App))
推荐阅读
- swift - 用变量填充结构
- javascript - 如何根据单元格中的日期创建谷歌应用脚本 14 天提醒电子邮件给自己
- distributed-computing - 如何避免在网络分区期间故障转移到新主服务器期间丢失主服务器的内部状态
- android - 在您的应用程序文件夹中获取图像
- excel - 设定稳定的产品价格,同时收支平衡(Excel)
- android - avrdude 的包装器库
- java - gradle 升级到 4.10.0 后无法发布项目
- google-cloud-platform - 无法在对话流知识库中创建包含原始内容的文档
- python - 如何将无效的 json 转换为 val;python 中的 id json
- java - 在Java中读取和写入文件,同时保留特殊字符