首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >出现错误!元素类型无效:需要字符串(对于内置组件)或类/函数(对于HOC

出现错误!元素类型无效:需要字符串(对于内置组件)或类/函数(对于HOC
EN

Stack Overflow用户
提问于 2020-08-06 18:32:03
回答 2查看 34关注 0票数 0
代码语言:javascript
复制
import React, { useState } from 'react';
import CreateProject from './CreateProjectWithName';

function Enhanced(WrappedComponent) {
  // ...and returns another component...
  return class extends React.Component {
    constructor(props) {
      super(props);
      this.state = {
        data: []
      };
    }


    render() {
      return <WrappedComponent data={this.state.data} {...this.props} />;
    }
  };
}
const Wrapper = (props) => {
  const Comp = Enhanced(<CreateProject />);
  return (
    <div>

      <Comp />

      <div>
        {/* <button onClick={() => updateView()} /> */}
      </div>
    </div>
  );
};

这个代码块就是不能工作。我做错了什么?我错过了React的哪个基本原理?渲染HOC的正确方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2020-08-06 18:34:21

HOC接受一个组件引用,当您像这样使用它时,它是一个实例

代码语言:javascript
复制
const Comp = Enhanced(<CreateProject />);

正确的方法应该是

代码语言:javascript
复制
const Comp = Enhanced(CreateProject);

此外,出于性能原因和生命周期的正确执行,您必须在组件外部使用HOC创建包装组件

代码语言:javascript
复制
const Comp = Enhanced(CreateProject);
const Wrapper = (props) => {

  return (
    <div>

      <Comp />

      <div>
        {/* <button onClick={() => updateView()} /> */}
      </div>
    </div>
  );
};
票数 1
EN

Stack Overflow用户

发布于 2020-08-06 18:35:35

代码语言:javascript
复制
function Enhanced(WrappedComponent) {
  // ...and returns another component...
  return class extends React.Component {
    constructor(props) {
      super(props);
      this.state = {
        data: []
      };
    }


    render() {
      return <WrappedComponent data={this.state.data} {...this.props} />;
    }
  };
}
const Wrapper = (props) => {
  const Comp = Enhanced(CreateProject );
  return (
    <div>

      <Comp />

      <div>
        {/* <button onClick={() => updateView()} /> */}
      </div>
    </div>
  );
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63281690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档