Meteor + React错误元素类型无效:期望一个字符串(对于内置组件)

时间:2015-12-26 19:10:40

标签: meteor reactjs

我简化了此问题的代码

我的项目包含以下两个文件:

Comments.jsx

Comments = React.createClass({
  render() {
    return (
      <div className="container">
        Hello Comments
      </div>
    );
  }
});

App.jsx

App = React.createClass({

  renderComments() {
    return <Comments />;
  },
  render() {
    return (
      <div>
      {this.renderComments()}
      </div>
    );
  }
});

当我运行项目时,我收到以下错误:

  

警告:React.createElement:type不应为null,未定义,   布尔值或数字。它应该是一个字符串(对于DOM元素)或a   ReactClass(用于复合组件)。检查渲染方法   App

     

异步函数回调中的异常:错误:不变违规:   元素类型无效:期望一个字符串(对于内置组件)   或类/函数(对于复合组件)但得到:对象。校验   App的渲染方法。

如果我从App.jsx中移除{this.renderComments()} render() jsx标记,则所有内容都会重复。

我做错了什么?为什么我不能嵌入<Comments />

其他信息

好的,这真的很奇怪。如果我将Comments的所有实例重命名为Commnt,将comments重命名为commnts,并将文件Comments.jsx重命名为Commnt.jsx,那么一切正常!!! 即可。我尝试将其重命名为其他任何有效的东西。当我使用单词Comments时,我只会收到此错误。我必须开始驾驶,所以如果评论是保留字或其他什么,我会稍后查阅。

我的meteorjs项目中没有任何其他文件,除了html文件和myhelloworld.jsx有2个url路由。所以我很确定我知道一个事实我没有在其他任何地方使用评论。

1 个答案:

答案 0 :(得分:3)

我在我的meteor项目Comments = new Mongo.Collection("comments");的mainproject.jsx中有这个。因此,这会导致命名冲突,因为meteor将此变量推送到服务器和客户端。