【问题标题】:Error: Element type is invalid: Rendering Class within a Class错误:元素类型无效:在类中呈现类
【发布时间】:2021-04-22 00:23:06
【问题描述】:

我正在处理默认的 React Page Source.js 并尝试使用默认 App 呈现另一个组件

这是错误

错误:元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。

这是我的代码。

import logo from './logo.svg';
import './App.css';
import React from 'react';
import Card from 'react-bootstrap/Card';


class SimpleCard extends React.Component{
   render (props) {
      return(
          <Card>
             <Card.CardTitle>
                {this.props.name}
             </Card.CardTitle>
          </Card>
      );
   }
}

class App extends React.Component{
   renderSimpleCard(newName) {
      return <SimpleCard name="newName"/>;
   }

render(){
   return(
      <div className="App">
         <header className="App-header">
            <img src={logo} className="App-logo" alt="logo" />
      <p>
         Edit <code>src/App.js</code> and save to reload.
      </p>
      <a
        className="App-link"
        href="https://reactjs.org"
        target="_blank"
        rel="noopener noreferrer"
      >
        Learn React
      </a>
      <div>{this.renderSimpleCard("test")}</div>
   </header>
   </div>
  );
 }
}

export default App;

我的导入代码有什么问题还是我需要更改其他内容。就像在我的 package.json 中一样

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    Card.CardTitle 组件在 react-bootstrap 中不存在。它应该是Card.Title。

    <Card>
      <Card.Title>{this.props.name}</Card.Title>
    </Card>
    

    并且renderSimpleCard 方法应该将newName 变量传递给name 属性中的SimpleCard 组件(您的代码正在传递字符串'newName')。

    renderSimpleCard(newName) {
      return <SimpleCard name={newName} />;
    }
    

    另外,请注意render 方法不接收任何参数。

    render (props) {
      // ...
    }
    

    应该是

    render() {
      // ...
    }
    

    【讨论】:

    • 谢谢,这解决了我所有的问题。对不起,琐碎的问题
    • @P.Huang 别担心!
    猜你喜欢
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2020-06-24
    相关资源
    最近更新 更多