代码之家  ›  专栏  ›  技术社区  ›  Stav Alfi

为什么装饰程序抛出无效类型的错误

  •  0
  • Stav Alfi  · 技术社区  · 7 年前

    最简单的例子:

    import React from 'react';
    import ReactDOM from 'react-dom';
    
    
    const decorator = context => WrappedComponent => <WrappedComponent context={context}/>;
    
    @decorator(1)
    class Parent extends React.Component {
        render(){
            return 1;
        }
    }
    
    ReactDOM.render(<Parent />, document.getElementById('app-root'));
    

    错误:

    react.development.js:225警告:react.createElement:类型无效 --需要字符串(用于内置组件)或类/函数(用于复合组件),但得到:。你不小心 导出JSX文本而不是组件?

    react dom.development.js:55未捕获错误:元素类型无效: 应为字符串(用于内置组件)或类/函数(用于 复合组件),但得到:对象。


    巴别塔配置:

    "plugins": [
        [
          "@babel/plugin-proposal-decorators",
          {
            "legacy": true
          }
        ]
      ] 
    

    我的装饰师有什么问题?

    1 回复  |  直到 7 年前
        1
  •  1
  •   CROSP    7 年前

    返回 JSX

    const decorator = (providedContext) => (WrappedComponent) => {
       return class extends React.Component {
    
          componentDidMount() {
    
          }
          render() {
             return <WrappedComponent context={providedContext}/>
          }
       }
    }