javascript - connect react redux HOC 得到错误 `Cannot call a class as a function`

标签 javascript reactjs ecmascript-6 redux

我下面的 HOC 有什么问题?我遇到无法将类作为函数调用的错误?

https://i.imgur.com/SirwcGZ.png

我的 HOC

const CheckPermission = (Component) => { 
    return class App extends Component { 
        componentDidMount() {
            this.props.fetchUsers().then(resp => {
                this.setState({user: true, loading: false});
            })
        } 
        render() { 
           const { user, loading } = this.props

           loading && <div>Loading...</div>

           !user && <Redirect to="/dashboard" />

           return <Component {...this.props} />
        }
    } 
}


export default connect(state=>state.global, {fetchUsers})(CheckPermission)

这是我导入和使用 CheckPermission 的方式:

<Route exact path='/dashboard' component={CheckPermission(Dashboard)} />

最佳答案

你不能用 connect 包装 checkPermissions 因为它也是一个 HOC。 相反,您必须编写它们。

import { compose } from 'redux';

...

export default compose(
  connect(state=>state.global, {fetchUsers}),  
  CheckPermission
);

关于javascript - connect react redux HOC 得到错误 `Cannot call a class as a function`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49717775/

相关文章:

javascript - 如何将 ms word 文档内容导入 ReactJS 组件?

javascript - 我需要使用一个处理程序处理不同的输入 onChange 方法

javascript - lodash cloneDeep 从对象中删除代理

javascript - 在对象数组中创建唯一列表和数组项计数

javascript - 当涉及到 if 语句时,如何让 Javascript 不区分大小写?

javascript - jwplayer 在 80% 的视频上调用事件

node.js - Webpack 5 重大变更 "process/browser"

javascript - 使用 key 过滤 javascript 对象

javascript - this.state.todos.map 不是一个函数,React.js

c# - 在 Google map 标记中添加文本