Meteor 流星+;React Error元素类型无效:应为字符串(对于内置组件)
我简化了这个问题的代码 我的项目有以下两个文件: Comments.jsxMeteor 流星+;React Error元素类型无效:应为字符串(对于内置组件),meteor,reactjs,Meteor,Reactjs,我简化了这个问题的代码 我的项目有以下两个文件: Comments.jsx Comments = React.createClass({ render() { return ( <div className="container"> Hello Comments </div> ); } }); Comments=React.createClass({ render(){ 返回( 你好评论 ); } });
Comments = React.createClass({
render() {
return (
<div className="container">
Hello Comments
</div>
);
}
});
Comments=React.createClass({
render(){
返回(
你好评论
);
}
});
App.jsx
App = React.createClass({
renderComments() {
return <Comments />;
},
render() {
return (
<div>
{this.renderComments()}
</div>
);
}
});
App=React.createClass({
renderComments(){
返回;
},
render(){
返回(
{this.renderComments()}
);
}
});
当我运行项目时,我得到以下错误:
警告:React.createElement:类型不应为null,未定义,
布尔值,或数字。它应该是字符串(对于DOM元素)或
ReactClass(用于复合组件)。检查的渲染方法
App
异步函数回调中出现异常:错误:不变冲突:
元素类型无效:应为字符串(对于内置组件)
或者一个类/函数(用于复合组件),但得到:object。检查
App
的渲染方法
如果我从App.jsxrender()
jsx中删除{this.renderComments()}
,那么一切都会重新运行
我做错了什么?为什么我不能嵌入
其他信息 好吧,这真的很奇怪。如果我将
Comments
的所有实例重命名为Commnt
,Comments
为commnts
,并将Comments.jsx文件重命名为Commnt.jsx
,那么一切正常。我试着把它改名为其他任何能用的东西。我只有在使用“注释”这个词时才会出现此错误。我必须开始开车了,所以如果评论是保留字或什么的话,我会稍后再查
我的meteorjs项目中除了一个html文件和一个有两个url路由的
myhelloworld.jsx
之外没有其他文件。所以我很确定我知道我没有在其他地方使用注释。我在meteor项目的mainproject.jsx中有这个注释Comments=new Mongo.Collection(“注释”)代码>。因此,这导致了命名冲突,因为meteor将此变量同时推送到服务器和客户端。是否使用任何模块系统?是否需要.js、es6模块等?我猜你应该从Comments.jsx导出注释
,然后在App.jsx中导入。我不确定。当我第一次创建这个meteor项目时,我只是做了meteor add react;流星加铁:路由器;流星移除自动发布代码>。这是我在启动这个基础应用程序之前做的唯一一件事。是的,但是app.jsx
怎么知道你的项目中有Comments
对象呢?它可能不知道,所以它是未定义的。尝试将注释的定义移动到App.jsx,它应该可以工作。很抱歉,meteor.js无法帮助您在文件之间导入/导出代码。我创建了一个小提琴,它可以正常工作:嗨,pawal,ema,我使用了一个单词而不是注释
。我用这些细节更新了我的问题。