【问题标题】:Warning: React.createElement: type should not be null警告:React.createElement:类型不应为空
【发布时间】:2016-12-22 01:18:29
【问题描述】:

我正在使用 reactJS 创建我的第一个应用程序,但我不断收到此错误:

Warning: React.createElement: type should not be null, undefined, boolean, or number. It should be a string (for DOM element) or a ReactClass (for composite components). Check the render method of 'App'

我已经阅读了十几个问题,但没有一个可以帮助我解决这个问题。 这是我的文件:

我的 app.js 文件:

import React, { Component } from 'react';
import { View, Text } from 'react-native';
import { Header } from './components/common';
import { ChooseLevel } from './components/ChooseLevel';

class App extends Component {

  renderContent() {
    <ChooseLevel/>
  }

  render() {
    return (
      <View>
        <Header headerText="my app" />
        {this.renderContent()}
      </View>
    );
  }
}

export default App;

ChooseLevel.js

import React, { Component } from 'react';
import { Text, View } from 'react-native';

class ChooseLevel extends Component {

  render() {
    var rows = [];

    for (var i=1; i <= 10; i++) {
        rows.push(
          <button style={styles.squareStyle}> 
            Level   
          </button>
        );
    }


    return (
      <div>
        {rows}
      </div>
    );
  }
}

const styles = {
  squareStyle: {
    flex:0.3,
    height:60
  }
};

export default ChooseLevel;

【问题讨论】:

  • renderContent 有什么作用?返回组件...当您通过 foreaching 或类似方法执行 rows 时,您也必须返回组件

标签: reactjs react-native


【解决方案1】:

您正在进行默认导出:export default ChooseLevel;,但导入其他内容:import { ChooseLevel } from './components/ChooseLevel';

import { ChooseLevel } from './components/ChooseLevel'; 大致转换为const ChooseLevel = require('./components/ChooseLevel').ChooseLevel;

要导入默认导出值,您需要import ChooseLevel from './components/Chooselevel';

看看http://es6-features.org/#Constants,它详细解释了每个 ES6 特性。

【讨论】:

  • 太棒了,点赞.. 我需要咨询一下:作为 react native 标签的顶级用户,您认为值得学习吗?!有人说完美,有人说这是一个糟糕的主意..所以我很困惑,我想做一个移动应用程序(适用于Android和iOS操作系统),嗯,是否可以通过制作专业应用程序反应原生?还是 React Native 只是让我们制作初学者应用程序?另外,由 react native 创建的应用程序的质量如何?谢谢
  • 我绝对不应该出现在那个列表中。我只玩了一小会儿,并没有丰富的经验。然而,cmets 不是寻找这些信息的正确地方,如果这是 SO 或programmers.SE 的问题,您和社区将受益更多。我敢肯定,关于这个话题之前已经有很多讨论了。
猜你喜欢
  • 1970-01-01
  • 2016-03-31
  • 2015-10-25
  • 1970-01-01
  • 2017-03-03
  • 2016-04-21
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多