Javascript 创建超级表达式必须为null或函数,而不是对象

Javascript 创建超级表达式必须为null或函数,而不是对象,javascript,reactjs,ecmascript-6,babeljs,Javascript,Reactjs,Ecmascript 6,Babeljs,我正在为我的项目创建一个装饰器或高阶组件(HOC),它接受一个工厂函数,并返回另一个函数,该函数覆盖该组件,如下所示: class X extends React.Component { render() { return <div>Hi</div> } } export default Decorator(factory)(X); export default function Decorator(factoryFn) { return funct

我正在为我的项目创建一个装饰器或高阶组件(HOC),它接受一个工厂函数,并返回另一个函数,该函数覆盖该组件,如下所示:

class X extends React.Component {
  render() {
    return <div>Hi</div>
  }
}
export default Decorator(factory)(X);
export default function Decorator(factoryFn) {
  return function decorate(Component) {
    return class DecoratedComponent extends Component {
      static contextTypes = {
        allStyles: PropTypes.object.isRequired,
      }
      render() {
        const gStyles = factoryFn(this.context.allStyles);
        return (
          <Component {...this.props} gStyles={gStyles} />
        );
      }
    };
  };
}
X类扩展了React.Component{
render(){
回电
}
}
导出默认装饰器(工厂)(X);

@Decorator(工厂)
导出默认类X扩展React.Component{
render(){
回电
}
}
我的装饰程序的代码如下所示:

class X extends React.Component {
  render() {
    return <div>Hi</div>
  }
}
export default Decorator(factory)(X);
export default function Decorator(factoryFn) {
  return function decorate(Component) {
    return class DecoratedComponent extends Component {
      static contextTypes = {
        allStyles: PropTypes.object.isRequired,
      }
      render() {
        const gStyles = factoryFn(this.context.allStyles);
        return (
          <Component {...this.props} gStyles={gStyles} />
        );
      }
    };
  };
}
导出默认函数装饰器(factoryFn){
返回函数(组件){
返回类DecoratedComponent扩展组件{
静态上下文类型={
所有样式:PropTypes.object.isRequired,
}
render(){
const gStyles=factoryFn(this.context.allStyles);
返回(
);
}
};
};
}
运行此命令时,我从
babel runtime/inherits.js
中得到一个错误,它说:
超级表达式必须是null或函数,而不是object


创建装饰器或HOC的正确方法是什么?如果在声明
DecoratedComponent
类之前实际使用
console.log(Component)
,会得到什么?正如它所说,它是一个对象,而不是正确的函数。这是什么东西?啊,没关系。。。我发现了问题所在。是的,它是一个物体——从我的理解来看,它是一个相对较轻的物体。我在我的代码上运行了一些jscodeshift,但丢失了一个文件,我正在测试同一个文件,看看它是否工作:-O它完全按照它应该的方式工作。不应该工作这么久。。。也许我只是需要上床睡觉。谢谢你的时间@loganfsmyth。我投票结束这个问题,因为我解决了这个问题,这是一个注意力不集中和理解错误的案例。如果你在声明你的
装饰组件
类之前真的
console.log(Component)
,你会得到什么?正如它所说,它是一个对象,而不是正确的函数。这是什么东西?啊,没关系。。。我发现了问题所在。是的,它是一个物体——从我的理解来看,它是一个相对较轻的物体。我在我的代码上运行了一些jscodeshift,但丢失了一个文件,我正在测试同一个文件,看看它是否工作:-O它完全按照它应该的方式工作。不应该工作这么久。。。也许我只是需要上床睡觉。谢谢你的时间@loganfsmyth。我投票结束这个问题,因为我解决了这个问题,这是一个注意力不集中和理解错误的案例。