使用react高阶组件报错Cannot call a class as a function

import React, { Component } from 'react';
import simpleHoc from './components/simple-hoc';

class Usual extends Component {
    render() {
        console.log(this.props, 'props');
        return (
            <div>
                Usual
            </div>
        )
    }
}
export default simpleHoc(Usual);
import React, { Component } from 'react';

const simpleHocWrapped = WrappedComponent => {
    console.log('simpleHoc');
    return class extends Component {
        render() {
            return <WrappedComponent {...this.props}/>
        }
    }
}

class simpleHoc extends Component {
    constructor(props) {
        super(props);
        this.state = {
            mapPoint: [],
            area: [],
            bar: []
        };
    }

    render() {

        return (
            <simpleHocWrapped />
        )
    }
}


export default simpleHoc;

图片描述

阅读 7.1k
3 个回答

报错中说,不能把类作为一个函数,所以你的输出应该是一个函数才对吧,你现在输出的是一个类。

export default function simpleHocWrapped (WrappedComponent) {
   return class extends Component {
    render() {
        return <WrappedComponent {...this.props}/>
        }
    }
}

大概这样

<simpleHocWrapped />

const Test=simpleHocWrapped(Simple)

....
render(){
return <Test />
}

react组件首字母大写 高阶组件是为了返回一个组件

import React, { Component } from 'react';

function simpleHoc(WrappedComponent) {
    return class extends Component {

        constructor(props) {
            super(props);
            this.state = {
                mapPoint: [],
                area: [],
                bar: []
            };
        }

        render() {
            return <WrappedComponent {...this.props}/>
        }
    }
}

export default simpleHoc;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题